Въведение в многонишкова
Един от ключовите аспекти в съвременното програмиране е многонишкова. С помощта на многонишкова, можем да определим няколко потока, в приложението, което ще изпълнява различни задачи едновременно. Ако имаме, да речем, програма с графичен интерфейс, който изпраща молба до всеки сървър или чете и обработва огромен файл, без резба, блокирахме графичен интерфейс за срока на изпълнение на задачата. А благодарение на потоците, ние можем да идентифицират изпращане на заявката или друга задача, която може да бъде обработвана за дълго време, в отделна нишка. Ето защо, например, клиент-сървър приложения (и само тях) практически възможни без резби.
Основната функционалност за прилагане потоци концентрира пространство от имена на System.Threading. Той определя клас, който представлява отделна нишка - Тема клас.
Тема клас определя набор от методи и свойства, които позволяват да се контролира потока и да получите информация за него. Основните свойства на класа:
Статично CurrentContext имот осигурява контекст, в който се изпълнява нишката
CurrentThread статично имот връща препратка към текущата нишка
IsAlive собственост определя дали в момента поток
IsBackground собственост показва дали фон нишка
Имотът името съдържа името на потока
Приоритет имот запазва приоритета на конеца - изброяване на стойност ThreadPriority
ThreadState имот се връща на държавата конец - един от стойностите на изброяване ThreadState
Някои от методите на класа Thread:
GetDomain статичен метод връща препратка към областта на приложение
GetDomainId статичен метод връща идентификатора на областта на приложение, в което в тях ток
Статичен метод Sleep спира притока на определен брой милисекунди
Прекратяване на метод уведомява CLR, че е необходимо да се спре потока, но прекратяването на потока на работа става наведнъж, но само когато става възможно. За проверка на пълнотата на потока трябва да разпитва нейна собственост ThreadState
Прекъсване метод прекъсва потока за известно време
Присъединете метод блокове изпълнение на нишка призвание, докато, до приключване на потока, за която беше извикан този метод
Резюме метод възстановява преди суспендира нишката
метод Старт започва потока
Суспендира метод спира нишката
Получаване на информация за потока
Използването на по-горе описаните свойства и методи за получаване на информация за потока:
В този случай, ние се получи нещо подобно на следното заключение:
Тъй като по подразбиране Наименование собственост на обекта Тема не е намерена в първия случай получаваме като стойността на този имот е празен низ.
статус поток
състояния на потока се съдържат в списъка ThreadState на:
Преустановено. потокът се спира, но все още не е напълно завършен
AbortRequested. метод поток се нарича Прекратяване, но спиране на потока не е настъпило
Background. поточно във фонов режим
Работещи. поток е създаден и работи (не е спряна)
Спряно. Feed завършена
StopRequested. Храните са били помолени да се спре
Прекратена. резба се суспендира
SuspendRequested. Feed получи искане за спиране
Unstarted. Нахранете още не е започнало
WaitSleepJoin. поток е блокиран в резултат на действия или методи сън Присъединете
По време на работа на потока може да се промени статута си под действието на множество методи. Така че, в началото, преди прилагането на метода Започнете статутът му е Unstarted. Работещи поток, ние ще се промени статута си на бягане. Обадете се на метод сън, статутът няма да се промени, за да WaitSleepJoin. Прилагайки метода Прекратяване, ние по този начин да се трансформира в състояние на поток AbortRequested, а след това е прекратено, след което потокът окончателно завършена.
приоритети конци
Приоритети поток са подредени в списък ThreadPriority на:
По подразбиране е настроен на Normal поток. Въпреки това, ние можем да го промените, в работната програма. Например, увеличаване на значението на потока чрез задаване на приоритета Най-висока. CLR среда ще четат и анализират стойността на приоритета въз основа на него и този поток се разпределят на определен период от време.