Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Имея такую ссылку, можно управлять основным потоком, как и любым другим.

Поиск

В следующей программе демонстрируется, как получить ссылку на основной поток, узнать его имя и приоритет, а также задать новое имя и приоритет:

 

// Управление основным потоком.

using System;

using System.Threading;

 

class UseMain

{

public static void Main()

{

Thread thrd;

 

// Получаем ссылку на объект основного потока

thrd = Thread.CurrentThread;

 

// Отображаем имя основного потока

if (thrd.Name == null)

Console.WriteLine("Основной поток не имеет имени.");

else

Console.WriteLine("Имя основного потока: " + thrd.Name);

 

// Отображаем приоритет основного потока.

Console.WriteLine("Приоритет: " + thrd.Priority);

Console.WriteLine();

 

// Задаем имя и приоритет.

Console.WriteLine("Установка имени и приоритета.\n");

thrd.Name = "Основной поток";

thrd.Priority = ThreadPriority.AboveNormal;

 

Console.WriteLine(

"У основного потока теперь есть имя: " + thrd.Name);

 

Console.WriteLine("Приоритет теперь таков: " + thrd.Priority);

}

}

 

Результаты выполнения этой программы таковы:

 

Основной поток не имеет имени.

Приоритет: Normal

 

Установка имени и приоритета.

 

У основного потока теперь есть имя: Основной поток

Приоритет теперь таков: AboveNormal

 

 

Предупреждение: будьте осторожны при выполнении операций над основным потоком. Например, если обращение к методу Join()

 

thrd.Join();

 

добавить в конец метода Main(), программа никогда не завершится, поскольку она будет ожидать, пока не завершится основной поток!

 

Использование класса Timer для управления потоками

 

 

Timer – члены класса

Открытые конструкторы

Timer - конструктор Перегружен. Инициализирует новый экземпляр класса Timer.

Открытые методы

Change Перегружен. Меняет время запуска и интервал межу вызовами метода таймера.
CreateObjRef (унаследовано от MarshalByRefObject) Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для коммуникации с удаленными объектами.
Dispose Перегружен. Освобождает все ресурсы, используемые экземпляром класса Timer.
Equals (унаследовано от Object) Перегружен. Определяет, равны ли два экземпляра Object.
GetHashCode (унаследовано от Object)   Служит хеш-функцией для конкретного типа, пригоден для использования в алгоритмах хеширования и структурах данных, например в хеш-таблице.
GetLifetimeService (унаследовано от MarshalByRefObject) Извлекает служебный объект текущего срока действия, который управляет средствами срока действия данного экземпляра.
GetType (унаследовано от Object) Возвращает Type текущего экземпляра.
InitializeLifetimeService (унаследовано от MarshalByRefObject) Получает служебный объект срока действия, для управления средствами срока действия данного экземпляра.
ToString (унаследовано от Object) Возвращает String, который представляет текущий Object.

Защищенные методы

Finalize   Переопределен. Освобождает ресурсы, удерживаемые текущим экземпляром. В языках C# и C++ для функций финализации используется синтаксис деструктора.
MemberwiseClone (унаследовано от Object) Создает неполную копию текущего Object.

 

 

Timer - конструктор

Инициализирует новый экземпляр класса Timer.

Список перегрузки

1. Инициализирует новый экземпляр класса Timer, используя указанное 32-разрядное знаковое целое число для задания временного интервала.

 

public Timer(TimerCallback, object, int, int);

 

2. Инициализирует новый экземпляр класса Timer, используя указанное 64-разрядное знаковое целое число для измерения временных интервалов.

 

public Timer(TimerCallback, object, long, long);

 

3. Инициализирует новый экземпляр класса Timer, используя значения объекта TimeSpan для измерения временных интервалов.

 

public Timer(TimerCallback, object, TimeSpan, TimeSpan);

 

4. Инициализирует новый экземпляр класса Timer, используя указанное 32-разрядное беззнаковое целое число для измерения временных интервалов. Этот конструктор не соответствует спецификации CLS.

 

public Timer(TimerCallback, object, uint, uint);

 

 



Поделиться:


Последнее изменение этой страницы: 2016-09-05; просмотров: 177; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.15.111.109 (0.007 с.)