Форум: "Начинающим";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];
ВнизКак узнать вне Thread а, что он закончил свое выполнение? Найти похожие ветки
← →
MixAnOL (2006-07-14 16:44) [0]сабж.
Т.е. создаю нить, запускаю, и мне нужно узнать когда она закончила свое выполнение, что бы взять результат и уничтожить ее...
Как это можно сделать штатно?
Можно конечно добавить свойство закончил/незакончил...
Что-то не задумывался об этом раньше..
Подскажите прием :)
← →
Сергей М. © (2006-07-14 16:49) [1]
> Подскажите
Подсказываю - нить, закончившаят свое выполнеение, всегда сигнализирует об этом, и сей сигнал обнаруживается чуть ли не любой wait-функцией в составе kernel32
← →
MixAnOL (2006-07-14 16:52) [2]т.е. мне придется в процедуре делать wait на объект нити?
а выполнение программы не встанет пока нить не отработает?
← →
Сергей М. © (2006-07-14 16:54) [3]Удалено модератором
Примечание: Повежливее
← →
Phoroon~ © (2006-07-14 16:59) [4]Удалено модератором
← →
MixAnOL (2006-07-14 16:59) [5]видать упал, если у меня такой вопрос возник...
да, я использую TThread...
да есть функция WaitFor..
Call WaitFor to obtain the value of ReturnValue when the thread finishes executing. WaitFor doesn"t return until the thread terminates
← →
Сергей М. © (2006-07-14 17:00) [6]
> MixAnOL (14.07.06 16:59) [5]
> да, я использую TThread...
> да есть функция WaitFor..
И ?
← →
MixAnOL (2006-07-14 17:01) [7]видать меня глючит в конце рабочей недели, раз народ прикалывается над моими вопросами...
башка уже тупит...
до этого использовал нити и вопросов не возникало..
← →
Сергей М. © (2006-07-14 17:02) [8]
> до этого использовал нити и вопросов не возникало
И ?
← →
Сергей М. © (2006-07-14 17:06) [9]Удалено модератором
← →
MixAnOL (2006-07-14 17:08) [10]дык, WaitFor не возвращает рез-тат пока нить не закончится...
мне нужно свойство у нить, что б эго проверить и узнать работает она еще или нет...
вот и спрашиваю есть какая-то стандартная проверка этого или нет...
← →
SergP. (2006-07-14 17:18) [11]А не проще сделать чтобы нить сама уничтожалась, но перед самоуничтожением передавала результаты через SendMessage?
← →
begin...end © (2006-07-14 17:20) [12]> MixAnOL (14.07.06 17:08) [10]
> мне нужно свойство у нить, что б эго проверить и узнать
> работает она еще или нет...
> вот и спрашиваю есть какая-то стандартная проверка этого
> или нет...
Есть. Если GetExitCodeThread вернёт STILL_ACTIVE, значит, поток ещё не завершён.
← →
MixAnOL (2006-07-14 17:32) [13]> GetExitCodeThread
вот спасибо!
← →
Leonid Troyanovsky © (2006-07-14 18:43) [14]
> MixAnOL (14.07.06 16:44)
> Т.е. создаю нить, запускаю, и мне нужно узнать когда она
> закончила свое выполнение, что бы взять результат и уничтожить
> ее...
> Как это можно сделать штатно?
> Можно конечно добавить свойство закончил/незакончил...
Есть такое свойство: OnTerminate.
Т.е., сработал оный обработчик - значит, поток завершился.
А для того, чтобы не ломать голову об уничтожении есть FreeOnTerminate.
--
Regards, LVT.
← →
MixAnOL (2006-07-19 17:01) [15]
> А для того, чтобы не ломать голову об уничтожении есть FreeOnTerminate
Это все понятно... просто мне нужно периодически опрашивать, что бы узнать готовы результаты или нет
← →
Leonid Troyanovsky © (2006-07-19 18:38) [16]
> MixAnOL (19.07.06 17:01) [15]
> Это все понятно... просто мне нужно периодически опрашивать,
> что бы узнать готовы результаты или нет
Дык, а спрашивать-то зачем?
Если сработал OnTerminate, то поток уже отработал,
результаты готовы.
--
Regards, LVT.
← →
evvcom © (2006-07-20 08:56) [17]> просто мне нужно периодически опрашивать, что бы узнать
что результаты не готовы? :)
← →
MixAnOL (2006-07-21 13:57) [18]))
Сделал поиск файлов в отдельном потоке. Юзер задает параметры пиоска, жмет на поиск и ждет когда закончится поиск. В это время я ему показываю прогрессбар. Прогрессбар перемещается по таймеру, а в таймере сделана проверка на завершение потока поиска. Такой способ мне больше нравится, чем помещать что-то в OnTerminate...
← →
StriderMan © (2006-07-21 14:06) [19]
> просто мне нужно периодически опрашивать, что бы узнать
> готовы результаты или нет
какая нетерпеливая программа :)
← →
MixAnOL (2006-07-21 14:41) [20]
> какая нетерпеливая программа :)
и зачем так иронизировать? по моему, вполне нормальный подход..
← →
Юрий Зотов © (2006-07-21 14:52) [21]> MixAnOL (21.07.06 13:57) [18]
Предположим, поиск затянулся и прогрессбар уже дошел до конца, а поиск еще идет. Или наоборот, прогрессбар еще не дошел до конца, а поиск уже закончился. Как быть?
Можено придумать какой-то хитрый алгоритм прогнозирования следующего интервала таймера. Можно еще что-то. А можно просто показать юзеру анимашку вместо прогрессбара. Не знаю, что лучше, но что ПРОЩЕ - знаю точно.
← →
MixAnOL (2006-07-21 15:25) [22]
> Предположим, поиск затянулся и прогрессбар уже дошел до
> конца, а поиск еще идет. Или наоборот, прогрессбар еще не
> дошел до конца, а поиск уже закончился. Как быть?
Это не важно, главное показать что идет процесс...
Можно и не прогресс, а анимацию, но опять же это не важно..
← →
Юрий Зотов © (2006-07-21 15:35) [23]> MixAnOL (21.07.06 15:25) [22]
Совершенно согласен. Поэтому из двух одинаково хороших решений я бы выбрал то, что проще. То есть, стандартную анимашку aviFindFile. И не нужны будут никакие таймеры и никакие заморочки с синхронизацией, да и код получится куда проще.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.01 c