Обучающие курсы:

Обучение профессии "Разработчик C#" + стажировка в Mail.ru
Обучение профессии "Разработчик Python" + трудоустройство
Обучение профессии "Веб-разработчик" + стажировка в Mail.ru


Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Прелюдия к практическому примеру.

В следующем разделе вашему вниманию будет представлен пример приложения, использующего многопоточность.

В прошлых уроках вы уже познакомились с классом, который работает с процессами. Настало время поближе познакомиться с классом, работающим с потоками языка C#.

System.Object
   System.Threading.Thread

Рассмотрим вкратце свойства и методы данного класса.

public Thread(ThreadStart start); - конструктор класса, получает в качестве параметра делегат, который ссылается на функцию - точку входа в поток

public delegate void ThreadStart(); - тип потоковой функции.

public static Thread CurrentThread {get;} - свойство, содержащее объект текущего потока.

public bool IsAlive {get;} - содержит true, если поток находится в запущенном состоянии.

public bool IsBackground {get; set;} - если true, то данный поток является потоком фоновым, если false, то поток является приоритетным потоком. Разница заключается в том, что при закрытии приложения для всех активных фоновых потоков вызываеся функция Abort(), которая прерывает работу потока. Приоритетные потоки не дают приложению завершиться, пока они не завершится сами. При создании нового потока, он по умолчанию становится приоритетным.

public string Name {get; set;} - свойство, позволяющее получить или установить имя для потока.

public ThreadPriority Priority {get; set;} - приоритет потока.

  • Lowest - наименьший приоритет. Выполняется после всех потоков с другим приоритетом.
  • BelowNormal - выполняется до потока с приоритетом Lowest, но после потока с приоритетом Normal.
  • Normal - приоритет по умолчанию. Выполняется до потоков с приоритетом BelowNormal, но после потоков с приоритетом AboveNormal.
  • AboveNormal - выполняется до потоков с приоритетом Normal, но после потоков с приоритетом Highest .
  • Highest - наивысший приоритет. Выполняется раньше потоков с другими приоритетами.

public ThreadState ThreadState {get;}- свойство, описывающее состояние текущего потока.

public void Abort(); - вызывает исключение типа ThreadAbortException и останавливает поток. Данное исключение можно перехватить в потоке и, с помощью функции public static void ResetAbort();, отменить завершение потока.

public void Join();
public bool Join(int);
public bool Join(TimeSpan);

Блокирует вызывающий поток (на определенный или неопределенный промежуток времени), пока поток, для которого функция вызывается, не завершится.

public static void Sleep(int);
public static void Sleep(TimeSpan);

Блокирует текущий поток на указанное количество миллисекунд.

public void Start(); - Запуск потока

public void Suspend(); - приостанавливает поток

public void Resume(); - возобновляет приостановленный поток

public void Interrupt(); - прерывает поток, который находится в состоянии ожидания. Если поток не находится в состоянии ожидания, то поток прервется при следующем входе в блок ожидания.

Более подробную информацию можно получить, изучив практические 
примеры, или заглянув в MSDN.


 
 
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru