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

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

Новые технологии / Нити на кубиках

  • Демонстрация использования потоков с делегатами на примере игральных кубиков.
  • Дата отправки отчёта: 9 сентября 2015 г.
  • Задание выполнено: за 30 мин.
  • Чему научился: работе с потоками
  • Что было сложным: Побороться с необработанным исключением при повторном запуске так и не удалось :(
  • Комментарии: Вспомнился старый добрый ассемблер MASM со своим макросом INVOKE. Там при вызове INVOKE указывается имя функции, а потом через запятую перечисляются аргументы. Здесь тоже так попробовала сделать:
    if(InvokeRequired)
                {
                    DelegateShow show = ShowDice;
                    Invoke(show, a, b);
                    return;
                }
    И ... о, чудо!!! ОНО ЗАРАБОРАЛО!!!
    Однако при повторном запуске приложения часто (но не всегда) возникает необработанное исключение, с которым я не знаю, что делать.
    Пробовала запускать код как на уроке - проблема не исчезла.

    Жалко, что не успела отчитаться по делегатам - вчера совсем не было времени. Но я выполнила предыдущий урок, и все получилось.

  • Оценка видео-уроку:
Отчёт от 4004 за Новые технологии / Нити на кубиках


Отчёт от 4004 за Новые технологии / Нити на кубиках




Оцени работу

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

2146. Иван
Иван
ответить
→  Елена  # Новые технологии / Нити на кубиках / 2015-09-09 21:55

Вот в этом отчете http://www.videosharp.info/5649/checking/soft2=62 видел еще решение. Наверное, тоже имеет право на существование. ( dice1.Stop();


24. Олюшка
Олюшка
ответить
→  Елена  # Новые технологии / Нити на кубиках / 2015-09-09 21:09

Елена, я в восторге от твоей целеустремленности, что ты не сдаешься и решаешь задачу! Молодец!


4004. Елена
Елена
ответить
# Новые технологии / Нити на кубиках / 2015-09-09 20:22

Решила проблему вот таким обработчиком:
private void Form1_Leave(object sender, EventArgs e)
        {
            dice1.thread.Abort();
            dice2.thread.Abort();
            dice3.thread.Abort();
        }
Не знаю, насколько это корректно.



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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Работать с потоками и решать задачу доступа к методу в другом потоке.
Трудности: Разобраться в этом коде: if (InvokeRequired) { Invoke(new DelegateShow(ShowSum), new object[] { a, b }); return; }
Евгений вы все хорошо объясняете. Спасибо за видеоурок!
Трудности: Понять тему потоки. К сожалению, тема действительно очень сложная и серьезная. Знаю, что на курсах такую тему преподают не на курсах для начинающих, в универах редко вообще затрагивают, а на работе не в программистских контрорах тоже редко используют. Но технология нужная, востребованная и нужно пользоваться и учиться.
Урок понравился, хоть и были некоторые недочеты - но тем самым мы видим, как можно решить возникшие проблемы, как их устранить, где искать ответ. Главное - что все решается и все работает.