- Автор темы
- #1
Прелюдия к практическому примеру.
В следующем разделе вашему вниманию будет представлен пример приложения, использующего многопоточность.
В прошлых уроках вы уже познакомились с классом, который работает с процессами. Настало время поближе познакомиться с классом, работающим с потоками языка C#.
Рассмотрим вкратце свойства и методы данного класса.
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;} - приоритет потока.
public ThreadState ThreadState {get;}- свойство, описывающее состояние текущего потока.
public void Abort(); - вызывает исключение типа ThreadAbortException и останавливает поток. Данное исключение можно перехватить в потоке и, с помощью функции public static void ResetAbort();, отменить завершение потока.
Блокирует вызывающий поток (на определенный или неопределенный промежуток времени), пока поток, для которого функция вызывается, не завершится.
Блокирует текущий поток на указанное количество миллисекунд.
public void Start(); - Запуск потока
public void Suspend(); - приостанавливает поток
public void Resume(); - возобновляет приостановленный поток
public void Interrupt(); - прерывает поток, который находится в состоянии ожидания. Если поток не находится в состоянии ожидания, то поток прервется при следующем входе в блок ожидания.
В следующем разделе вашему вниманию будет представлен пример приложения, использующего многопоточность.
В прошлых уроках вы уже познакомились с классом, который работает с процессами. Настало время поближе познакомиться с классом, работающим с потоками языка 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(); - прерывает поток, который находится в состоянии ожидания. Если поток не находится в состоянии ожидания, то поток прервется при следующем входе в блок ожидания.