Курсы по программированию

Формула программиста
основатель — Волосатов Евгений Витольдович

Бурные потоки / Замри!

  • На этом уроке мы поговорим о статусах потока:
    Unstarted, Running, Wait/Sleep/Join, Abort Requested, Stopped.
    Создадим функционал для остановки потоков по нажатию клавиш.
    И научимся сопротивляться этим остановкам.
  • Дата отправки отчёта: 23 апреля 2016 г.
  • Задание выполнено: за 30 мин.
  • Чему научился: Научился обрабатывать запросы на прерывание процесса и (при необходимости) противодействовать им.
  • Что было сложным: ---
  • Комментарии: ---
  • Оценка видео-уроку:
Отчёт от 9263 за Бурные потоки / Замри!




Оцени работу

 
Сохранить страницу:

  • Отчёт оценивали:
    9263Андрей Н.+1   8380zhikharevav+1   3506Алексей|BrisK|Кривицкий+1   7645Александр Львович+1   9567Максим+1   1537Сергей+1   1Евгений Витольдович+1   6452Lik_Kirill+1   4467Alcatraz+1   6458Илья+1   791Валерий+1   9237Mais+1   4992Николай+1   459Сергей Сергеевич+1   7119Новопашин Владимир0   24Оля+1   8835Булат+1   9332Dima+1   4805Сергей В+1   7652Петя+1   1901Neverwinter 2+1  

Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.
Научился: Узнал о существовании статуса потоков. Попытался ими управлять. Но не все получилось.
Трудности: Непонятно зачем в функции Run() нужно 2 цикла. У меня все работает с одним.
Попытался управлять Питонами с помощью статуса. Но не все получилось. Например, хотел по нажатию клавиши временно приостанавливать поток методом .Suspend(), а затем освобождать методом t[ip].Resume(); (См. в скриншоте закомментированный текст. Условие в строке 52 как-то странно работает: всегда true) Кто-то может указать на ошибку? Зато проверку Thread.ResetAbort(); сделал по-другому, менее жестко: я решил на 2 секунды приостановить выбранного питона, затем освободить его и поменять ему цвет на белый. В динамике это выглядит красиво.
Научился: Закрепил голику использования lock, повторил Abort, узнал, какие состояния бывают у потока
Трудности: Ничего
Мне кажется, нужно было сделать больший акцент на том, что когда мы прерываем поток, то внутри него может возникнуть именно ОШИБКА (если мы его прерываем не во время ожидания). Просто у когда я у себя в одной программе так делал во время выполнения sql запроса (выполнялся он долго, так что в фоновом потоке), программа не ждала, пока он выполниться и просто вырубала весь поток, в связи с чем в нём возникала ошибка. А так всё хорошо =)