- Регистрация
- 05.06.2019
- Сообщения
- 570
- Благодарностей
- 454
- Баллы
- 63
Опция: Выполнить BadEnd при прерывании проекта
Проект
Пример кода
1. Ручное прерывание (на кнопки интерфейса), не прерывают проект. Не отрабатывает опция "Выполнить BadEnd при прерывании проекта".
2. Метод ZennoPoster.InterruptTask("InterruptTask"); Не прерывают проект. Не отрабатывает опция "Выполнить BadEnd при прерывании проекта".
Как эта штука работает? Что не так делаю? Как правильно прервать, чтобы вышло на BadEnd?
Предложение
Если аналогичный вопрос, стоит заглянуть в тему.
Проект
Пример кода
1. Ручное прерывание (на кнопки интерфейса), не прерывают проект. Не отрабатывает опция "Выполнить BadEnd при прерывании проекта".
2. Метод ZennoPoster.InterruptTask("InterruptTask"); Не прерывают проект. Не отрабатывает опция "Выполнить BadEnd при прерывании проекта".
ВопросВариант №1:for(int i = 0; i <= 1000; i++) { project.SendInfoToLog("Делаю какую-то работу...", true); Thread.Sleep(1000); if (i > 10) { project.SendInfoToLog("StopTask", true); ZennoPoster.StopTask("InterruptTask"); } if (i > 15) { project.SendInfoToLog("InterruptTask", true); ZennoPoster.InterruptTask("InterruptTask"); } if (i > 20) break; }
Вариант №2://-------------------------------------------------------------------------------- // Свой код: Start //-------------------------------------------------------------------------------- CommonCode.project = project; Thread t = new Thread(CommonCode.ThreadProc); t.Start(); Thread.Sleep(10000); CommonCode.mre.Set(); project.SendInfoToLog("Главный поток ожидает окончания работы вторичного потока..."); t.Join();
Директивы using и Общий код://-------------------------------------------------------------------------------- // Общий код: //-------------------------------------------------------------------------------- public class CommonCode { public static ManualResetEvent mre = new ManualResetEvent(false); public static IZennoPosterProjectModel project; /// <summary> /// Lock this object to mark part of code for single thread execution /// </summary> public static object SyncObject = new object(); // Insert your code here public static void ThreadProc() { string name = Thread.CurrentThread.Name; project.SendInfoToLog("Активизирован вторичный поток. Состояние: ожидает событие..."+ name, true); mre.WaitOne(); project.SendInfoToLog("Вторичный поток продолжил выполнение..."+ name, true); Thread.Sleep(10000); project.SendInfoToLog("Вторичный поток закончил выполнение..."+ name, true); } }
Как эта штука работает? Что не так делаю? Как правильно прервать, чтобы вышло на BadEnd?
Предложение
Если аналогичный вопрос, стоит заглянуть в тему.
Вложения
-
11,6 КБ Просмотры: 8
Последнее редактирование: