![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Applet в другом потоке [Delphi, KOL 2.08, Windows]
Vladimyr © (2005-04-28 13:30:00)Добрый день, нужно запускать Апплет в отдельном потоке несколько раз.
Первый запуск проходит нормально, а вот второй и последующие - нет.
Вот код:
// запуск треда
hThread:= CreateThread (nil, 0, @PrThread, nil, 0, ThID);
WaitForSingleObject (hThread, INFINITE); // ждём, пока тред не завершится
CloseHandle (hThread);
hThread := 0;
.............................
// собственно тред
function PrThread (P: Pointer): DWORD; stdcall;
begin
try
if Applet = nil then Applet := NewApplet ('Applet');
NewSettForm (SettForm, Pointer (Applet));
Applet.AllBtnReturnClick;
run (Applet);
finally
result:= GetLastError;
end;
end;
Результат - invalid handle. Что же здесь не так?..
Vladimyr (2005-04-29 21:31:00) [1]I need to start Applet more and more from inside itself :)
This trick is now working, thanks.
thaddy (2005-04-29 09:04:00) [2]Do you mean you have one defined task that you have to run several times? in that case put the task in threads.
Do you mean you have to run a full application several times?
Use createprocess from a controller application instead of Thread. Createprocess also gives you a handle you can use in the synchro primitives
Vladimyr (2005-04-29 03:35:00) [3]Thanks, thaddy, all right now.
I just was an idiot :)
But I have really oneApplet,
just need to run it several times.
thaddy (2005-04-29 00:34:00) [4]You can have only one applet! it is the application object!!!!
You have to write separate objects for what you want.
Look at the threads demo on my site on how to solve the problem
Vladimyr (2005-04-29 00:12:00) [5]AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Я идиот !!!!!!!!!!!!! :-| :-( :-C :-@
AppletRunning := true;
AppletTerminated := false;
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA