Прервать работу проекта c#

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
Добрый день!
Подскажите пожалуйста кто знает, как прервать выполнение проекта через c# код?
Т.е нужно чтоб дойдя до определенного момента в коде сработала кнопка "Стоп" на данном проекте, чтоб больше он не пытался начать работать по новой, и далее проект полностью отключился через кнопку "Прервать".
upload_2017-4-3_13-53-42.png

Так же может кто знает, как через c# продолжить работу проекта с выбранного кубика?
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 453
Благодарностей
5 913
Баллы
113

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
Спасибо большое!
 
  • Спасибо
Реакции: VladZen

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113
мне оч. стыдно, но чо то нифига не вышло..
объясните как пользоваться примерами кода из материалов по этим ссылкам..
задача простая - сделать Стоп или Прервать изнутри шаблона..
то есть, чтобы шаблон сам себя выключил, как бы..
примеры кода нормально отрабатывают, но стопа или прерывания у меня не происходит..
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
мне оч. стыдно, но чо то нифига не вышло..
объясните как пользоваться примерами кода из материалов по этим ссылкам..
задача простая - сделать Стоп или Прервать изнутри шаблона..
то есть, чтобы шаблон сам себя выключил, как бы..
примеры кода нормально отрабатывают, но стопа или прерывания у меня не происходит..
Код:
ZennoPoster.StopTask(Guid.Parse(project.TaskId));
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113
Последнее редактирование:
  • Спасибо
Реакции: doc

ukrainec2014

Client
Регистрация
12.05.2017
Сообщения
351
Благодарностей
52
Баллы
28
спасибо, все работает.. :-)
А как прервать работу шаблона в зеннопостере если после "Остановить" и "Прервать" - все равно он выполняет действия? типа дорабатывает до конца задачу

ПС
Сейчас только помогает вырубить зенку и опять включить.. только это останавливает шаблон!
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
C# кубик и в нём код

C#:
if (Global.Variables.IsProjectMaker && !Global.Variables.IsDebugMode) throw new Exception();
if (((ZennoLab.InterfacesLibrary.ProjectModel.Collections.IContextExt)project.Context).IsInterrupted) throw new Exception();
ну и если проект браузерный и на кубиках то такой кубик ставить там где тебе угодно
 
  • Спасибо
Реакции: Sho и Mikhail B.

ukrainec2014

Client
Регистрация
12.05.2017
Сообщения
351
Благодарностей
52
Баллы
28
ну и если проект браузерный и на кубиках то такой кубик ставить там где тебе угодно
спасибо, а как прервать именно в зеннопостере и именно тогда когда нужно (заранее не знаю когда наступит момент, слежу по таймингу и по инстансу смотрю что делается)
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
спасибо, а как прервать именно в зеннопостере и именно тогда когда нужно (заранее не знаю когда наступит момент, слежу по таймингу и по инстансу смотрю что делается)
этот код и для ПМ и для ЗП, а вот когда именно тебе надо прервать то тут не понятно

нажимаешь прервать и он остановится
 

ukrainec2014

Client
Регистрация
12.05.2017
Сообщения
351
Благодарностей
52
Баллы
28
этот код и для ПМ и для ЗП, а вот когда именно тебе надо прервать то тут не понятно

нажимаешь прервать и он остановится
может я не так выразился, постараюсь поподробнее...

вот есть шаблон, например он уже выполняется 60 минут, я вижу что он уже пошел не туда куда надо или выполнил действие и зациклился (не судите сам шаблон, это только для примера) и мне надо остановить его. Средствами ZP ("Остановить" и "Прервать") шаблон все равно продолжает работу до логического конца...

и вот тут логичный вопрос, как же все таки его остановить? (пока помогает только перезапуск ZP)
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
может я не так выразился, постараюсь поподробнее...

вот есть шаблон, например он уже выполняется 60 минут, я вижу что он уже пошел не туда куда надо или выполнил действие и зациклился (не судите сам шаблон, это только для примера) и мне надо остановить его. Средствами ZP ("Остановить" и "Прервать") шаблон все равно продолжает работу до логического конца...

и вот тут логичный вопрос, как же все таки его остановить? (пока помогает только перезапуск ZP)
я тебе дал код, нажимаешь именно прервать и он останавливается если ты такой код выставишь после каждого кубика если у тебя проект с кубиков +100500, то тебе и надо такой кубик размножить в нужных местах
 
  • Спасибо
Реакции: ukrainec2014

ukrainec2014

Client
Регистрация
12.05.2017
Сообщения
351
Благодарностей
52
Баллы
28
я тебе дал код, нажимаешь именно прервать и он останавливается если ты такой код выставишь после каждого кубика если у тебя проект с кубиков +100500, то тебе и надо такой кубик размножить в нужных местах
все, теперь понял принцип работы, пошел тестить, благодарю
 

ukrainec2014

Client
Регистрация
12.05.2017
Сообщения
351
Благодарностей
52
Баллы
28
в нужных местах

Кстати заметил что "Прервать" в ZP работает если запускать просто в заданиях, а если в диспетчере заданий то не работает по такому же принципу и не останавливает шаблон!

и кубик также не помог(
это после нажатия "Прервать" через диспетчер заданий ZP
http://joxi.ru/bmo13v0CxY7MWA

вот такой шаблон
http://joxi.ru/ZrJ9PpdU9Pb9bA
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
выделяешь проект и прервать
и всё работает

и он у тебя не прервётся сразу, если он уже прошёл этот кубик то выполнит действие и прервётся на следующем где он у тебя стоит
 

ukrainec2014

Client
Регистрация
12.05.2017
Сообщения
351
Благодарностей
52
Баллы
28
и он у тебя не прервётся сразу, если он уже прошёл этот кубик то выполнит действие и прервётся на следующем где он у тебя стоит
я понимаю, если кубик 100% работает, тогда может быть проблема в зенке?

в диспетчере заданий запускаю проект, он начинает работу, на втором этапе прерываю → http://joxi.ru/gmvBy7bULWdQ6m

но он все равно дорабатывает → http://joxi.ru/DmBBbxzUwag8zm

2 раза кубик полюбому прошел!
 

ukrainec2014

Client
Регистрация
12.05.2017
Сообщения
351
Благодарностей
52
Баллы
28

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
честно с диспетчера заданий не пробывалыл ни разу
 

ukrainec2014

Client
Регистрация
12.05.2017
Сообщения
351
Благодарностей
52
Баллы
28
честно с диспетчера заданий не пробывалыл ни разу
так вот в нем как раз таки и проблема.. а работать с него удобно.. запланировал себе заданий и вперед с песней)

я же писал что проблема именно с "диспетчером заданий"
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
всё работает, добавил в диспетчер заданий и прервал без проблем

2018-12-22_032647.png

2018-12-22_032623.png
 
  • Спасибо
Реакции: ukrainec2014

ukrainec2014

Client
Регистрация
12.05.2017
Сообщения
351
Благодарностей
52
Баллы
28
добавил в диспетчер заданий и прервал без проблем
опля.. понял, значит у меня что то косячит... буду завтра переустанавливать(
спасибо за уделенное время друг мой
 

Alex733

Client
Регистрация
27.11.2017
Сообщения
330
Благодарностей
243
Баллы
43
опля.. понял, значит у меня что то косячит... буду завтра переустанавливать(
спасибо за уделенное время друг мой
Раньше я то же перезапускал зенку. Сейчас помогает уменьшение потоков до нуля и если остался зацикленный проект удаляю его из заданий в самом зеннопостере.
 

ukrainec2014

Client
Регистрация
12.05.2017
Сообщения
351
Благодарностей
52
Баллы
28
Раньше я то же перезапускал зенку. Сейчас помогает уменьшение потоков до нуля и если остался зацикленный проект удаляю его из заданий в самом зеннопостере.
проект то удаляется, но выполнение продолжается, об этом сведетельствует уведомления в зеннопостере.
проект удалил - все его нету.. а уведомления дальше идут, тоесть он продолжает выполняться..
 

z@jivalo

Client
Регистрация
27.12.2016
Сообщения
800
Благодарностей
179
Баллы
43
C#:
if (Global.Variables.IsProjectMaker && !Global.Variables.IsDebugMode) throw new Exception();
if (((ZennoLab.InterfacesLibrary.ProjectModel.Collections.IContextExt)project.Context).IsInterrupted) throw new Exception();


что-то этот код на 5.18v не хочет работать ни в pm ни в zp
поставил счетчик, если доходит до этого значения то срабатывает данный код, он то срабатывает и процесс работы шаблона все равно идет дальше.
 
Последнее редактирование:
  • Спасибо
Реакции: Sho

z@jivalo

Client
Регистрация
27.12.2016
Сообщения
800
Благодарностей
179
Баллы
43

Alex733

Client
Регистрация
27.11.2017
Сообщения
330
Благодарностей
243
Баллы
43
Еще один способ, когда нужно, что бы код отрабатывался только в PM.
Вставляю в первом кубике
C#:
project.Variables["windName"].Value = System.Diagnostics.Process.GetCurrentProcess().MainWindowTitle;
В нужном месте шаблона проверяю на наличие в переменной "ProjectMaker" и код отрабатывает только в PM.
 

z@jivalo

Client
Регистрация
27.12.2016
Сообщения
800
Благодарностей
179
Баллы
43
сорри случайно ответил,
уже запутался куда писал
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 415
Благодарностей
5 454
Баллы
113
C# кубик и в нём код

C#:
if (Global.Variables.IsProjectMaker && !Global.Variables.IsDebugMode) throw new Exception();
if (((ZennoLab.InterfacesLibrary.ProjectModel.Collections.IContextExt)project.Context).IsInterrupted) throw new Exception();
ну и если проект браузерный и на кубиках то такой кубик ставить там где тебе угодно
Работает отлично! Спасибо.
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 261
Благодарностей
679
Баллы
113
Через выброс эксепшена всё отлично работает, а нету более приличного метода для остановки проекта? Ну типа при вызове метода проект просто останавливается? а не эксепшены сыпит.

вот это не работает по какой то причине

C#:
ZennoPoster.StopTask(Guid.Parse(project.TaskId));
 
  • Спасибо
Реакции: Sho

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
549
Благодарностей
1 130
Баллы
93
Через выброс эксепшена всё отлично работает, а нету более приличного метода для остановки проекта? Ну типа при вызове метода проект просто останавливается? а не эксепшены сыпит.

вот это не работает по какой то причине

C#:
ZennoPoster.StopTask(Guid.Parse(project.TaskId));
Привет.

Вероятно, вы столкнулись с тем, что метод остановки отрабатывает не так, как нужно.
Ссылка: Пример как Запустить или Остановить задачу на основе имени шаблона.
Данное решение можно упаковать в метод общего кода и использовать одной строчкой.

Так же, если вам нужна экстренная остановка метода, но без выхода по красной ветке, то всегда можно использовать конструкции: throw, try-catch, try-finally и try-catch-finallymsdn
 
  • Спасибо
Реакции: Sho и Sherminator

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