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

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

baimkin

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

Так же может кто знает, как через c# продолжить работу проекта с выбранного кубика?
 
Спасибо большое!
 
  • Оценить
Реакции: VladZen
мне оч. стыдно, но чо то нифига не вышло..
объясните как пользоваться примерами кода из материалов по этим ссылкам..
задача простая - сделать Стоп или Прервать изнутри шаблона..
то есть, чтобы шаблон сам себя выключил, как бы..
примеры кода нормально отрабатывают, но стопа или прерывания у меня не происходит..
 
мне оч. стыдно, но чо то нифига не вышло..
объясните как пользоваться примерами кода из материалов по этим ссылкам..
задача простая - сделать Стоп или Прервать изнутри шаблона..
то есть, чтобы шаблон сам себя выключил, как бы..
примеры кода нормально отрабатывают, но стопа или прерывания у меня не происходит..
Код:
Развернуть Свернуть Копировать
ZennoPoster.StopTask(Guid.Parse(project.TaskId));
 
Последнее редактирование:
  • Оценить
Реакции: doc
спасибо, все работает.. :-)
А как прервать работу шаблона в зеннопостере если после "Остановить" и "Прервать" - все равно он выполняет действия? типа дорабатывает до конца задачу

ПС
Сейчас только помогает вырубить зенку и опять включить.. только это останавливает шаблон!
 
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.
ну и если проект браузерный и на кубиках то такой кубик ставить там где тебе угодно
спасибо, а как прервать именно в зеннопостере и именно тогда когда нужно (заранее не знаю когда наступит момент, слежу по таймингу и по инстансу смотрю что делается)
 
спасибо, а как прервать именно в зеннопостере и именно тогда когда нужно (заранее не знаю когда наступит момент, слежу по таймингу и по инстансу смотрю что делается)
этот код и для ПМ и для ЗП, а вот когда именно тебе надо прервать то тут не понятно

нажимаешь прервать и он остановится
 
этот код и для ПМ и для ЗП, а вот когда именно тебе надо прервать то тут не понятно

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

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

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

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

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

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

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


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

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

вот такой шаблон
http://joxi.ru/ZrJ9PpdU9Pb9bA
 
выделяешь проект и прервать
и всё работает

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

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

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

2 раза кубик полюбому прошел!
 
честно с диспетчера заданий не пробывалыл ни разу
 
честно с диспетчера заданий не пробывалыл ни разу
так вот в нем как раз таки и проблема.. а работать с него удобно.. запланировал себе заданий и вперед с песней)

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

2018-12-22_032647.png

2018-12-22_032623.png
 
  • Оценить
Реакции: ukrainec2014
опля.. понял, значит у меня что то косячит... буду завтра переустанавливать(
спасибо за уделенное время друг мой
Раньше я то же перезапускал зенку. Сейчас помогает уменьшение потоков до нуля и если остался зацикленный проект удаляю его из заданий в самом зеннопостере.
 
Раньше я то же перезапускал зенку. Сейчас помогает уменьшение потоков до нуля и если остался зацикленный проект удаляю его из заданий в самом зеннопостере.
проект то удаляется, но выполнение продолжается, об этом сведетельствует уведомления в зеннопостере.
проект удалил - все его нету.. а уведомления дальше идут, тоесть он продолжает выполняться..
 
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
Еще один способ, когда нужно, что бы код отрабатывался только в PM.
Вставляю в первом кубике
C#:
Развернуть Свернуть Копировать
project.Variables["windName"].Value = System.Diagnostics.Process.GetCurrentProcess().MainWindowTitle;
В нужном месте шаблона проверяю на наличие в переменной "ProjectMaker" и код отрабатывает только в PM.
 
сорри случайно ответил,
уже запутался куда писал
 
C# кубик и в нём код

C#:
Развернуть Свернуть Копировать
if (Global.Variables.IsProjectMaker && !Global.Variables.IsDebugMode) throw new Exception();
if (((ZennoLab.InterfacesLibrary.ProjectModel.Collections.IContextExt)project.Context).IsInterrupted) throw new Exception();

ну и если проект браузерный и на кубиках то такой кубик ставить там где тебе угодно
Работает отлично! Спасибо.
 
Через выброс эксепшена всё отлично работает, а нету более приличного метода для остановки проекта? Ну типа при вызове метода проект просто останавливается? а не эксепшены сыпит.

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

C#:
Развернуть Свернуть Копировать
ZennoPoster.StopTask(Guid.Parse(project.TaskId));
 
  • Оценить
Реакции: Sho
Через выброс эксепшена всё отлично работает, а нету более приличного метода для остановки проекта? Ну типа при вызове метода проект просто останавливается? а не эксепшены сыпит.

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

C#:
Развернуть Свернуть Копировать
ZennoPoster.StopTask(Guid.Parse(project.TaskId));
Привет.

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

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

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