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

Формула программиста
основатель — Волосатов Евгений Витольдович
Вступай в Телеграм чат проекта | Обход блокировки
Игровой комплекс Сокобан - Введи код скидки

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

  • На этом уроке мы поговорим о статусах потока:
    Unstarted, Running, Wait/Sleep/Join, Abort Requested, Stopped.
    Создадим функционал для остановки потоков по нажатию клавиш.
    И научимся сопротивляться этим остановкам.
  • Дата отправки отчёта: 1 мая 2016 г.
  • Задание выполнено: за 30 мин.
  • Чему научился: Останавливать поток по клавише и игнорировать запрос на его остановку
  • Что было сложным: разобраться в разнице между lock и Monitor. Как я понял lock это обертка для использовании функций класса Monitor, но этот класс предоставляет больше тонких настроек, не только вход и выход из критической секции.
    Также тело критической секции должно быть наиболее маленьким, ошибки все равно могут возникать. Об этом тут написано: https://blogs.msdn.microsoft.com/ericlippert/2009/03/06/locks-and-exceptions-do-not-mix/
  • Комментарии: Если зажать клавишу с номером потока и не отпускать, на поле в случайных местах, и даже на рамке появляется эта цифра цветом того потока, где случилось прерывание. Это видно на скиншоте)
  • Оценка видео-уроку:
Отчёт от 4780 за Бурные потоки / Замри!




Оцени работу

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


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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.


Научился: ловить ошибки потоков
Трудности: переделать весь проект на WinForm
Я не большой любитель консоли, поэтому решил переделать на вин формы. Визуализация сильно лучше не стала, пока просто перенес все на форму и переписал отображение. Пришлось использовать BeginInvoke, ибо при коллизиях в процедуре отрисовки писало, что объект занят другим потоком.


Научился: Научился завершать потоки. А также не знал, как в консоле узнать , какая была нажата клавиша.
Спасибо . Очень наглядная картинка состояний потока.