Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Timer (TimerCallback, Object, Int32, Int32)↑ ⇐ ПредыдущаяСтр 4 из 4 Содержание книги
Поиск на нашем сайте
Инициализирует новый экземпляр класса Timer, используя указанное 32-разрядное знаковое целое число для задания временного интервала. public Timer (TimerCallback callback, object state, int dueTime, int period);
Параметры: callback - делегат TimerCallback, представляющий выполняемый метод.
state - объект, содержащий информацию, используемую методом ответного вызова или значение пустая ссылка.
dueTime - количество времени до начала использования параметра callback, в миллисекундах. Следует задать поле Timeout.Infinite для того, чтобы не допустить запуск таймера. Задайте значение ноль (0) для немедленного запуска таймера.
period - временной интервал между вызовами параметра callback, в миллисекундах. Следует задать поле Timeout.Infinite для отключения периодического сигнализирования. Исключения
Примечания Делегат, заданный параметром callback, вызывается один раз, после того, как пройдет время, равное dueTime, и затем каждый раз по прошествии времени, равного значению period.
Если параметр dueTime равен нулю (0), сразу используется параметр callback. Если параметр dueTime равен Timeout.Infinite, параметр callback не используется; счетчик отключается, но он может быть включен заново вызовом метода Change. Если параметр period равен нулю (0) или Infinite, а параметр dueTime не равен Infinite, параметр callback используется один раз; периодическое поведение таймера отключается, но может быть включено заново используя метод Change.
Пример
using System; using System.Threading; Class ManagementThreads { // Метод CheckTime вызывается по таймеру Public static void CheckTime(Object state) { Console.WriteLine(DateTime.Now); } Static void Main() { // Создание делегата, который будет вызываться таймером TimerCallback tc = new TimerCallback (CheckTime); // Создание таймера, срабатывающего дважды в секунду (500) // Первый запуск произойдет через одну секунду (1000) Timer t = new Timer (tc, null, 1000, 500); // Ожидание ввода пользователя Console.WriteLine ("Нажмите Enter для выхода"); Console.ReadLine(); t.Dispose(); // Освобождение ресурсов t = null; } } Совет по созданию многопоточных программ
Если создать слишком много потоков, реальное быстродействие программы может пострадать. Каждое переключение контекста требует определенных расходов системных ресурсов. При большом количестве потоков на изменение контекста будет потрачено больше процессорного времени, чем на выполнение самой программы! Библиотека классов.NET Framework Thread - класс Создает и контролирует поток, задает его приоритет и возвращает его статус. public sealed class ThreadПотокобезопасность: этот тип можно безопасно использовать в многопоточных операциях. Примечания Процесс может создавать один или более потоков для выполнения частей программного кода, связанного с процессом. Следует использовать делегат ThreadStart для задания программного кода, выполняемого потоком. В течение своего существования поток всегда находится в одном или более состояниях, определенных в классе ThreadState. Для потока можно запрашивать планирование уровня приоритета, который определяется классом ThreadPriority, но не гарантируется, что операционная система предоставит его. Метод GetHashCode предоставляет идентификацию управляемых потоков. В течение жизни поток не будет конфликтовать со значениями, полученными от других потоков, независимо от домена приложения, из которой получается значение. Примечание. Идентификационный номер потока (ThreadId) операционной системы не имеет жесткой взаимосвязи с управляемым потоком, так как неуправляемый хост может контролировать взаимосвязь между управляемыми и неуправляемыми потоками. В частности, сложный хост может использовать API общеязыковой среды выполнения для планирования нескольких управляемых потоков на один поток операционной системы или перемещения управляемых потоков между различными потоками операционной системы. Пример using System;using System.Threading; // Simple threading scenario: Start a static method running// on a second thread. public class ThreadExample { // The ThreadProc method is called when the thread starts. // It loops ten times, writing to the console and yielding // the rest of its time slice each time, and then ends. public static void ThreadProc () { for (int i = 0; i < 10; i++) { Console.WriteLine("ThreadProc: {0}", i); // Yield the rest of the time slice. Thread.Sleep(0); } } public static void Main () { Console.WriteLine("Main thread: Start a second thread."); // The constructor for the Thread class requires a ThreadStart // delegate that represents the method to be executed on the // thread. C# simplifies the creation of this delegate. Thread t = new Thread(new ThreadStart(ThreadProc)); // Start ThreadProc. On a uniprocessor, the thread does not get // any processor time until the main thread yields. Uncomment // the Thread.Sleep that follows t.Start() to see the difference. t.Start(); //Thread.Sleep(0); for (int i = 0; i < 4; i++) { Console.WriteLine("Main thread: Do some work."); Thread.Sleep(0); } Console.WriteLine("Main thread: Call Join(), to wait until ThreadProc ends."); t.Join(); Console.WriteLine("Main thread: ThreadProc.Join has returned. Press Enter to end program."); Console.ReadLine(); }}Этот код формирует выходные данные, подобные приведенным ниже: Пространство имен: System.Threading Thread - члены Открытые конструкторы
Открытые свойства
Открытые методы
Защищенные методы
- статический ThreadState - перечисление Задает состояния выполнения объекта Thread. Атрибут FlagsAttribute этого перечисления разрешает двоичные операции со значениями его членов. [Flags][Serializable] public enum ThreadStateПримечания Класс ThreadState определяет набор всех возможных состояний выполнения для потока. После создания потока и до завершения он находится по крайней мере в одном из состояний. Потоки, созданные в общеязыковой среде выполнения, изначально находятся в состоянии Unstarted, в то время как внешние потоки, приходящие в среду выполнения, находятся уже в состоянии Running. Потоки с состоянием Unstarted переходят в состояние Running при вызове метода Start. Не все комбинации значений ThreadState являются допустимыми; например, поток не может быть одновременно в состояниях Aborted и Unstarted. В следующей таблице перечислены действия, вызывающие смену состояния.
В дополнение к вышеперечисленным состояниям, существует также Background состояние, которое указывает, выполняется ли поток на фоне или на переднем плане. Поток может находиться в более, чем одном состоянии одновременно. Например, если поток заблокирован при вызове к методу Wait, а другой поток вызывает метод Abort к заблокированному потоку, то этот заблокированный поток будет находится одновременно в состояниях WaitSleepJoin и AbortRequested. В этом случае, как только поток осуществляет возврат из вызова к методу Wait или его работа прерывается, он получит исключение ThreadAbortException для начала аварийного завершения. Свойство Thread.ThreadState потока содержит текущее состояние потока. Приложения должны использовать битовую маску для того, чтобы определить, выполняется поток или нет. Если значение для состояния Running потока равно нулю (0), следует проверить, выполняется ли поток, используя код C#, например, (myThread.ThreadState & (ThreadState.Stopped | ThreadState.Unstarted)) == 0, или код Visual Basic, например, (myThread.ThreadState And (ThreadState.Stopped Or ThreadState.Unstarted)) = 0. Члены
Требования Пространство имен: System.Threading Сборка: Mscorlib (в Mscorlib.dll) См. также System.Threading - пространство имен | Thread | Состояния потоков | Управляемые и неуправляемые потоки
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-09-05; просмотров: 317; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.175.191 (0.012 с.) |