Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Опять вопрос по тредам...
|
|||
|---|---|---|---|
|
#18+
Хочу написать на собитие закрытия формы такую вот штуку: if <проверка: работает ли мой тред> then Action:=caNone; Как узнать, работает тред или нет?? При создании треда у меня свойство FreeOnTerminate:=true; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2003, 15:46 |
|
||
|
Опять вопрос по тредам...
|
|||
|---|---|---|---|
|
#18+
Вообще-то каждый тред должен иметь свой Handle. Если создавать его средствами API, то он возвращается как результат создающей функции CreateThread. В Delphi, видимо как и во всех остальных случаях, это что-то типа Thread.Handle Пюс, в API есть функция, позволяющая узнать существует ли поток с данным Handle. Правда я сейчас сходу не скажу название, нужно лезть в документацию. Ага, вот, нашёл: GetExitCodeProcess - ... эта функция может быть использованя дял опредения того факта, что конкретный процесс всё ещё выполняется... синтакис BOOL GetExitCodeProcess(HANDLE hProcess,LPDWORD lpdwExitCode) правда, это C, синтаксис для Delphi нжно смотреть в файле Windows.pas, где объявлены все заголовки функций для API. Ищите по имени функции. Если процесс ещё не завершён, то переменная lpdwExitCode будет иметь значение STILL_ACTIVE. Подробности см. в справке по WinAPI, она поставляется в комплекте c Delphi. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2003, 20:32 |
|
||
|
Опять вопрос по тредам...
|
|||
|---|---|---|---|
|
#18+
Дмитрий Мыльников ваша функция возвращает информацию о процессе , а не о потоке для потока будет функция GetExitCodeThread кстате, альтернативой к этой функции можно использовать сигнальные функции... которые позволяют в том числе и дожидаться завершения потока ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 03:29 |
|
||
|
Опять вопрос по тредам...
|
|||
|---|---|---|---|
|
#18+
Я делаю это так: 1) Завожу указатель на объект потока, напр. Fthread, первоначально = nil. 2) Создаю поток FThread := TMyThread.Create(....), причем FreeOnTerminate=True, как у Вас 3) Определяю обработчик TMyThread.OnTerminate, в котором выставляю Fthread=nil. Активность потока можно определить по значению Fthread, равен он nil, или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 15:21 |
|
||
|
Опять вопрос по тредам...
|
|||
|---|---|---|---|
|
#18+
Можно воспользоваться классом TThreadList ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 16:59 |
|
||
|
Опять вопрос по тредам...
|
|||
|---|---|---|---|
|
#18+
Если WaitForSingleObject (ThreadHandle, 0) вернет WAIT_TIMEOUT, значит поток еще жив. Если WAIT_OBJECT_0, значит уже умер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 20:30 |
|
||
|
Опять вопрос по тредам...
|
|||
|---|---|---|---|
|
#18+
Можно также определить у своего треда деструктор вроде того: destructor Destroy; begin inherited; {здесь выставить флаг завершения потока} end; надо только иметь ввиду, что Destroy будет вызван в контексте этого треда, поэтому доступ к флагу завершения должен быть синхронизирован. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2003, 10:47 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32243991&tid=2117192]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
38ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 320ms |

| 0 / 0 |
