Как безопасно остановить проект изнутри?

  • Автор темы Автор темы Astraport
  • Дата начала Дата начала

Astraport

Client
Регистрация
01.05.2015
Сообщения
5 084
Реакции
4 633
Баллы
113
Например шаблон работает бесконечное количество раз (-1 в "сколько делать") и в 50 потоков.
Но диск не резиновый, проверкой на GetFreeSpaceAmout можно поймать момент когда места почти не останется.
Нужно дать корректно доработать текущим проектам и не добавлять новых попыток.
Как решить задачу?
Поменять кол-во попыток на 50 с помощью SetTries, записать какой-нибудь флаг в глобальную переменную, но тогда потом шаблон будет ещё долго тарахтеть по кругу выбирая эти 50. Может есть получше вариант?
 
Поменять кол-во попыток на 50 с помощью SetTries, записать какой-нибудь флаг в глобальную переменную, но тогда потом шаблон будет ещё долго тарахтеть по кругу выбирая эти 50. Может есть получше вариант?
Может по сигналу создать файл и в нем уменьшать кол-во попыток?
 
Может по сигналу создать файл и в нем уменьшать кол-во попыток?
Ну вот я боюсь, что будет обрубать текущие потоки.
Получить количество потоков и выставить это же значение - как вариант?
Тоже самое что я описал.
 
Не так много вариантов, либо остановка, либо прерывание, остальное должно быть предусмотрено в самих шаблонах.
 
Не так много вариантов, либо остановка, либо прерывание, остальное должно быть предусмотрено в самих шаблонах.
Ну вот как корректно остановку сделать внутри шаблона?
 
Ну вот как корректно остановку сделать внутри шаблона?
В местах перед записью на диск и подобным, сделать ответвления на успешные выходы.
В чистом коде, это, конечно, удобнее было бы.
 
В местах перед записью на диск и подобным, сделать ответвления на успешные выходы.
В чистом коде, это, конечно, удобнее было бы.
Спасибо, но ничего непонятно)
Какие ответвления? Записывать файл и, если нет места на диске, то что? Это же крайне плохой путь.
В чистом коде, это, конечно, удобнее было бы.
Что есть "чистый" код? C#? Я его и юзаю.
 
Какие ответвления? Записывать файл и, если нет места на диске, то что? Это же крайне плохой путь.
Тут даже можно обойтись без ответвлений, просто выходить по красной, а уже в bad end'е собирать оставшуюся инфу, если нужно.
 
Вот этот метод точно даст безопасно завершить все оставшиеся потоки?
изменение настроект никак не взаимодействует с активными инстансами.
Ради теста можно создать шаблон с паузой в минуту, запустить, а потом изменить количество попыток на ноль
 
  • Оценить
Реакции: 606 и Astraport
Можно просто после выполнения нужного условия выполнить остановку проекта, другие запущенные потоки доработают, новые запускаться не будут.
C#:
Развернуть Свернуть Копировать
ZennoPoster.StopTask(Guid.Parse(project.TaskId));
Прерывание всех запущенных потоков можно сделать так, новые тоже не будт запускаться
C#:
Развернуть Свернуть Копировать
ZennoPoster.InterruptTask(Guid.Parse(project.TaskId));
 
  • Оценить
Реакции: j2082192

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)