Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Console.WriteLine("***** Working with Timer type *****n");Console.ReadLine();static void PrintTime(object state){ Console.WriteLine("Time is: {0}", DateTime.Now.ToLongTimeString());}Обратите внимание, что метод
PrintTime()System.ObjectvoidTimerCallbackTimerCallbackSystem.ObjectSystem.ArrayСледующий шаг связан с конфигурированием экземпляра делегата
TimerCallbackTimerTimerCallbackTimerSystem.ObjectConsole.WriteLine("***** Working with Timer type *****n");// Создать делегат для типа Timer.TimerCallback timeCB = new TimerCallback(PrintTime);// Установить параметры таймера.Timer t = new Timer( timeCB, // Объект делегата TimerCallback. null, // Информация для передачи в вызванный метод. // (null, если информация отсутствует). 0, // Период ожидания перед запуском (в миллисекундах). 1000); // Интервал между вызовами (в миллисекундах).Console.WriteLine("Hit Enter key to terminate...");Console.ReadLine();В этом случае метод
PrintTime()***** Working with Timer type *****Hit key to terminate...Time is: 6:51:48 PMTime is: 6:51:49 PMTime is: 6:51:50 PMTime is: 6:51:51 PMTime is: 6:51:52 PMPress any key to continue ...Чтобы передать целевому методу делегата какую-то информацию, необходимо просто заменить значение
null// Установить параметры таймера.Timer t = new Timer(timeCB, "Hello From C# 9.0", 0, 1000);You can then obtain the incoming data as follows:static void PrintTime(object state){ Console.WriteLine("Time is: {0}, Param is: {1}", DateTime.Now.ToLongTimeString(), state.ToString());}Использование автономного отбрасывания (нововведение в версии 7.0)
В предыдущем примере переменная
Timer var _ = new Timer( timeCB, // Объект делегата TimerCallback. null, // Информация для передачи в вызванный метод // (null, если информация отсутствует). 0, // Период ожидания перед запуском // (в миллисекундах). 1000); // Интервал между вызовами // (в миллисекундах). Класс ThreadPool
Следующей темой о потоках, которую мы рассмотрим в настоящей главе, будет роль пула потоков. Запуск нового потока связан с затратами, поэтому в целях повышения эффективности пул потоков удерживает созданные (но неактивные) потоки до тех пор, пока они не понадобятся. Для взаимодействия с этим пулом ожидающих потоков в пространстве имен
System.ThreadingThreadPoolЧтобы запросить поток из пула для обработки вызова метода, можно использовать метод
ThreadPool.QueueUserWorkItem()WaitCallbackSystem.Objectpublic static class ThreadPool{ ... public static bool QueueUserWorkItem(WaitCallback callBack); public static bool QueueUserWorkItem(WaitCallback callBack, object state);}Делегат
WaitCallbackSystem.ObjectQueueUserWorkItem()System.ObjectnullThreadPoolAppPrinterThreadPrintNumbers()Похожие книги на "Язык программирования C#9 и платформа .NET5", Троелсен Эндрю
Троелсен Эндрю читать все книги автора по порядку
Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки mir-knigi.info.