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