Завершить конкретный поток

dihard

Client
Регистрация
08.11.2019
Сообщения
307
Благодарностей
48
Баллы
28
Добрый день, подскажите как можно завершить работу конкретного потока, есть многопоток, при определенных действиях поток уходит по красной ветке, как мне его там убить? Чтобы все потоки не ложились
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 656
Благодарностей
9 223
Баллы
113
Добрый день, подскажите как можно завершить работу конкретного потока, есть многопоток, при определенных действиях поток уходит по красной ветке, как мне его там убить? Чтобы все потоки не ложились
Добрый вечер.
Если поток уходит по красной ветке, то он завершается.
Если по красной ветке нет больше ничего.
 
  • Спасибо
Реакции: dihard

dihard

Client
Регистрация
08.11.2019
Сообщения
307
Благодарностей
48
Баллы
28
Добрый вечер.
Если поток уходит по красной ветке, то он завершается.
Если по красной ветке нет больше ничего.
Извините я написал "образно". Есть список со строками, когда строки заканчиваются уходит по красной ветке, там сообщение "Поток завершил работу" , но он будет уходить на "почетный круг" дальше так как многопоток, искал код на c# , но удается только убить все потоки сразу, когда первый достигает "финиша"
 

S10n4eg

Client
Регистрация
25.06.2014
Сообщения
271
Благодарностей
44
Баллы
28
Извините я написал "образно". Есть список со строками, когда строки заканчиваются уходит по красной ветке, там сообщение "Поток завершил работу" , но он будет уходить на "почетный круг" дальше так как многопоток, искал код на c# , но удается только убить все потоки сразу, когда первый достигает "финиша"
Попробуйте так - колличество неуспехов, только тогда нужно будет убрать бен енд вроде как
130056
 
  • Спасибо
Реакции: dihard

Alex91

Активный пользователь
Регистрация
15.08.2024
Сообщения
531
Благодарностей
137
Баллы
43
Извините я написал "образно". Есть список со строками, когда строки заканчиваются уходит по красной ветке, там сообщение "Поток завершил работу" , но он будет уходить на "почетный круг" дальше так как многопоток, искал код на c# , но удается только убить все потоки сразу, когда первый достигает "финиша"
Образно... Это как ?
Что значит Почетный круг ?
Что значит дальше как многопоток ? А до этого что работал как однопоток ?

Сформулируй задачу четко, а не образно... Что надо сделать в рамках всего проекта и что конкретно ты хочешь в каждом запуске, каждого потока этого проекта...
 

dihard

Client
Регистрация
08.11.2019
Сообщения
307
Благодарностей
48
Баллы
28
Образно... Это как ?
Что значит Почетный круг ?
Что значит дальше как многопоток ? А до этого что работал как однопоток ?

Сформулируй задачу четко, а не образно... Что надо сделать в рамках всего проекта и что конкретно ты хочешь в каждом запуске, каждого потока этого проекта...
"образно" может указывать на то, что что-то представлено в виде образа, формы или представления, а не в прямом, буквальном смысле. Я надеюсь так понятней
Почетный круг - значит что все данные из списка исчерпаны и он крутиться по кругу
Не КАК многопоток, а ТАК КАК многопоток

"Сформулируй задачу четко, а не образно... Что надо сделать в рамках всего проекта и что конкретно ты хочешь в каждом запуске, каждого потока этого проекта..."
Я написал выше, я хочу когда поток уходит по красной ветке(когда все строки закончились) , был убран из проекта, сейчас он крутиться 24/7
 

dihard

Client
Регистрация
08.11.2019
Сообщения
307
Благодарностей
48
Баллы
28

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 719
Благодарностей
1 296
Баллы
113
Почетный круг - значит что все данные из списка исчерпаны и он крутиться по кругу
Так а в чем проблема в месте, где "данные из списка исчерпаны", по красной ветке выйти на завершение потока/проекта/шаблона?
 
  • Спасибо
Реакции: dihard

dihard

Client
Регистрация
08.11.2019
Сообщения
307
Благодарностей
48
Баллы
28
Так а в чем проблема в месте, где "данные из списка исчерпаны", по красной ветке выйти на завершение потока/проекта/шаблона?
Сейчас у меня выводиться на сообщение, тоесть если я уберу его и поток уйдет по красной ветке не на сообщение, он вылетет? Блинo_O
 

dihard

Client
Регистрация
08.11.2019
Сообщения
307
Благодарностей
48
Баллы
28
В любом случае всем спасибо за ответы, я как-то об этом не подумал даже. Я думаю это рабочее решенее)
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 719
Благодарностей
1 296
Баллы
113
Красной ветке нужно куда-то уходить. Вполне нормально уйти на сообщение "В списке пусто, закончили работу!", после которого ничего нет. Шаблон завершит работу.
Если выхода куда-то по красной ветке нет, проект завершится по Bad End.
 
  • Спасибо
Реакции: dihard

dihard

Client
Регистрация
08.11.2019
Сообщения
307
Благодарностей
48
Баллы
28
Красной ветке нужно куда-то уходить. Вполне нормально уйти на сообщение "В списке пусто, закончили работу!", после которого ничего нет. Шаблон завершит работу.
Если выхода куда-то по красной ветке нет, проект завершится по Bad End.
Я так и делал, но шаблон не останавливает работу, когда все потоки закончили работу. Попробую выйти просто по красной ветке после списка, не знаю. Просто получается он работает вечно))
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 719
Благодарностей
1 296
Баллы
113
Я так и делал, но шаблон не останавливает работу, когда все потоки закончили работу. Попробую выйти просто по красной ветке после списка, не знаю. Просто получается он работает вечно))
Причем здесь "шаблон не останавливает работу", если мы говорим про поток? Если ты запускаешь бесконечное количество потоков, то причем здесь завершение каждого потока в отдельности? Каждый закончил, другие работают и запускаются, если ты им сказал запускаться.
Мы не знаем ни логики шаблона, ни логики запусков, ни логики работы со списком. Без такой информации что-то советовать - впустую тратить время, по сути. Мы даже не знаем, что ты подразумеваешь под "проектом". Может, у тебя там один шаблон, которому ты поставил -1 в запуски и надеешься, что оно само решит, что пора заканчивать. Вообще все, даже то, к чему сам поток отношения не имеет напрямую.
 
Последнее редактирование:
  • Спасибо
Реакции: dihard

Oleg1987

Client
Регистрация
11.08.2014
Сообщения
1 249
Благодарностей
790
Баллы
113
После кубика "Сообщение" вставь c# код ZennoPoster.StopTask(Guid.Parse(project.TaskId)); и шаблон остановится
 

Alex91

Активный пользователь
Регистрация
15.08.2024
Сообщения
531
Благодарностей
137
Баллы
43
Я так и делал, но шаблон не останавливает работу, когда все потоки закончили работу. Попробую выйти просто по красной ветке после списка, не знаю. Просто получается он работает вечно))
Ну то есть ты хочешь стопнуть весь проект, когда закончатся строки в списке... Это совсем отличается от сути твоего вопроса, где ты хочешь выйти из потока проекта...

По сути тебе нужен управляющий шаблон, который контролирует рабочие потоки. Такой шаблон должен работать в один поток, без браузера. При запуске он инициализирует все переменные, можно в глобалках, можно в любой БД. После инициализации , он должен иметь рабочий цикл, в котором контролирует все данные, принимает решения о запуске/остановке рабочих проектов, выводит информацию в лог или форму, делает обмен данными с формой, если она есть. После выполнения всех условий работы, делает постобработку данных, контролирует завершение рабочих потоков и выходит.

Можно конечно и без отдельного шаблона сделать, но тогда инициализацию первоначальных данных придется делать в ручную, либо по какой-то метке, которую тоже вручную придется инициировать. Хотя можно привязаться к количеству строк, входящего списка... Но тут возникнет жесткая проблема с синхронизацией потоков, локами и разделением логики внутри рабочего потока и ответвления на управляющую логику. При завершении тоже, придется действовать по глобальной метке, с разделением логики с учетом лока.

В общем и частном, я для себя выбрал управление проектом через дополнительный шаблон.
 

molotok

Client
Регистрация
17.04.2015
Сообщения
740
Благодарностей
364
Баллы
63
Если я правильно понял задачу, то она примерно следующая:
1. Есть список строк.
2. Нужно взять каждую строку и что-то сделать.
3. Когда строки кончатся - остановить работу потоков, для которых нет строк в списке.

Я в своих шаблона решаю это следующим образом:
1. Настройки запуска
- Кол-во потоков 10
- кол-во заданий 1000 (зависит от кол-ва строк в списке)
2. Логика шаблона
- берём сроку из списка
- если строка есть, выполняем действие и снова берём новую строку
- если строки нет, сбрасывает задания на 0 и в шаблоне заканчиваются действия - поток останавливается. Остальные потоки дорабатываю свой алгоритм и после проверки списка также останавливается.
 

heks

Client
Регистрация
01.10.2013
Сообщения
1 266
Благодарностей
342
Баллы
83
Проверку на пустые данные в переменную введи после кубика из которого берешь строку 'peremen'!='' если строка пустая тут по беду выходи. Раньше в зенке такое было после кубиков поп проверке текста на странице. Сейчас такой кубик не выходит автоматом приходится его самому где надо дописывать.
хотя если ты список очищаешь, без сохранения как я предполагаю, то у тебя должно при взятии строк когда в списке пусто уже уйти по беду.
 

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