На этом уроке мы поговорим о статусах потока: Unstarted, Running, Wait/Sleep/Join, Abort Requested, Stopped. Создадим функционал для остановки потоков по нажатию клавиш. И научимся сопротивляться этим остановкам.
Дата отправки отчёта:
22 августа 2018 г.
Задание выполнено: за
1 день 14 час. 56 мин.
Чему научился:
узнал глубже как остановить и управлять потоками.
Что было сложным:
При добавлении в метод Start
while (true) { ConsoleKeyInfo key = Console.ReadKey(); if (key.KeyChar >= '0' && key.KeyChar <= '9') threads[Convert.ToInt16(key.KeyChar.ToString())].Abort(); } Вылазит исключение:
System.Threading.ThreadAbortException HResult=0x80131530 Message=Поток находился в процессе прерывания. Source=mscorlib StackTrace: at System.Threading.Monitor.Enter(Object obj) at Python.Python.Run() in C:\Users\Administrator\projects\Python\Python\Python.cs:line 220 at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()
Я так понимаю связано с тем что поток что то не успел завершить. Пытался через отладку понять, также убрал все блоки(block). НО пока безрезультатно. Кто нибудь сталкивался с таким в данном уроке. Или просьба наведите в нужном направлении, куда копать?
Оценка видео-уроку:
Оцени работу
Сохранить страницу:
Отчёт оценивали: 3922. Александр+16452. Кирилл Шмойлов+117606. Виктор+1791. Валерий Жданов+117947. Dmitry Sinitsin+116218. Дмитрий+119525. Александр Балбашов+14395. Денис+17119. Новопашин Владимир+11. Евгений Волосатов+13747. Сергей+118493. Evgenii Kudriavtcev+118688. Arslan+119750. konstantin01295. Дмитрий Че+14814. Дмитрий+1459. Сергей Сергеевич+1
Начинаем практику по языку C#
Чтобы стать хорошим программистом — нужно писать программы.
На нашем сайте очень много практических упражнений.
После заполнения формы ты будешь подписан на рассылку
«C# Вебинары и Видеоуроки»,
у тебя появится доступ к видеоурокам и консольным задачам.
Несколько раз в неделю тебе будут приходить письма —
приглашения на вебинары, информация об акциях и скидках,
полезная информация по C#.
Научился: Провел эксперименты с остановкой движения каждого питона. Трудности: Понять смысл работы с ThreadAbortException и методом Thread.ResetAbort(); Так до конца и не понял почему нужно было помещать в while() еще один while() и для чего применяли Thread.ResetAbort(); если все равно питон продолжал двигаться(((