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

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 980
Благодарностей
4 433
Баллы
113
Например шаблон работает бесконечное количество раз (-1 в "сколько делать") и в 50 потоков.
Но диск не резиновый, проверкой на GetFreeSpaceAmout можно поймать момент когда места почти не останется.
Нужно дать корректно доработать текущим проектам и не добавлять новых попыток.
Как решить задачу?
Поменять кол-во попыток на 50 с помощью SetTries, записать какой-нибудь флаг в глобальную переменную, но тогда потом шаблон будет ещё долго тарахтеть по кругу выбирая эти 50. Может есть получше вариант?
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Поменять кол-во попыток на 50 с помощью SetTries, записать какой-нибудь флаг в глобальную переменную, но тогда потом шаблон будет ещё долго тарахтеть по кругу выбирая эти 50. Может есть получше вариант?
Может по сигналу создать файл и в нем уменьшать кол-во попыток?
 

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 241
Благодарностей
573
Баллы
113
Получить количество потоков и выставить это же значение - как вариант?
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 980
Благодарностей
4 433
Баллы
113
Может по сигналу создать файл и в нем уменьшать кол-во попыток?
Ну вот я боюсь, что будет обрубать текущие потоки.
Получить количество потоков и выставить это же значение - как вариант?
Тоже самое что я описал.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 371
Баллы
113
Не так много вариантов, либо остановка, либо прерывание, остальное должно быть предусмотрено в самих шаблонах.
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 980
Благодарностей
4 433
Баллы
113
Не так много вариантов, либо остановка, либо прерывание, остальное должно быть предусмотрено в самих шаблонах.
Ну вот как корректно остановку сделать внутри шаблона?
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 371
Баллы
113
Ну вот как корректно остановку сделать внутри шаблона?
В местах перед записью на диск и подобным, сделать ответвления на успешные выходы.
В чистом коде, это, конечно, удобнее было бы.
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 980
Благодарностей
4 433
Баллы
113
В местах перед записью на диск и подобным, сделать ответвления на успешные выходы.
В чистом коде, это, конечно, удобнее было бы.
Спасибо, но ничего непонятно)
Какие ответвления? Записывать файл и, если нет места на диске, то что? Это же крайне плохой путь.
В чистом коде, это, конечно, удобнее было бы.
Что есть "чистый" код? C#? Я его и юзаю.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 371
Баллы
113
Какие ответвления? Записывать файл и, если нет места на диске, то что? Это же крайне плохой путь.
Тут даже можно обойтись без ответвлений, просто выходить по красной, а уже в bad end'е собирать оставшуюся инфу, если нужно.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 980
Благодарностей
4 433
Баллы
113

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Вот этот метод точно даст безопасно завершить все оставшиеся потоки?
изменение настроект никак не взаимодействует с активными инстансами.
Ради теста можно создать шаблон с паузой в минуту, запустить, а потом изменить количество попыток на ноль
 
  • Спасибо
Реакции: 606 и Astraport

Metrix

Client
Регистрация
03.01.2014
Сообщения
342
Благодарностей
272
Баллы
63
Можно просто после выполнения нужного условия выполнить остановку проекта, другие запущенные потоки доработают, новые запускаться не будут.
C#:
ZennoPoster.StopTask(Guid.Parse(project.TaskId));
Прерывание всех запущенных потоков можно сделать так, новые тоже не будт запускаться
C#:
ZennoPoster.InterruptTask(Guid.Parse(project.TaskId));
 
  • Спасибо
Реакции: j2082192

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