Вниз
Скачать: CL | DM;

Особенности запуска процесса   Найти похожие ветки 

← →
Darvin ©   (2006-06-23 11:39) [0]

Здравствуйте.
Мне надо запустить процесс и дождаться окончания его выполнения. Я делаю так:
var
 SI     : STARTUPINFO;
 PI     : PROCESS_INFORMATION;

begin
   ...
   ZeroMemory ( @SI, SizeOf(SI) );
   SI.cb := SizeOf ( SI );
   if CreateProcess ( nil,              
                      PChar(FAppName + " " + FAppParams),    
                      nil,              // Process handle not inheritable.
                      nil,              // Thread handle not inheritable.
                      FALSE,         // Set handle inheritance to FALSE.
                      0,                // No creation flags.
                      nil,              // Use parent"s environment block.
                      nil,              // Use parent"s starting directory.
                      SI,              
                      PI )          
   then
   begin
     WaitForSingleObject ( PI.hProcess, INFINITE );
     CloseHandle ( PI.hProcess );
     CloseHandle ( PI.hThread );
     ...

Все работает, мой процесс на WaitForSingleObject ожидае выполнения строннего процесса. Но, у меня в приложении есть дополнительный поток TThread, который должен работать при работе стороннего процесса. А он не работает.
Вопрос.
Как правильно организовать вызов внешнего процесса, дождаться окончания его выполнения, но так, чтобы параллельные потоки моего приложения при этом работали?


← →
Сергей М. ©   (2006-06-23 11:40) [1]


> у меня в приложении есть дополнительный поток TThread, который
> должен работать при работе стороннего процесса. А он не
> работает


Значит у тебя ошибка в программе.


← →
Юрий Зотов ©   (2006-06-24 08:29) [2]

> Как правильно организовать вызов внешнего процесса, дождаться
> окончания его выполнения, но так, чтобы параллельные потоки моего
> приложения при этом работали?

Так, как у Вас и сделано, только в отдельном потоке. WaitForSingleObject усыпляет только тот поток, из которого она была вызвана, а все остальные будут работать.

Поэтому в [1] написано верно - если другой поток у Вас тоже переходит в ожидание, значит, он получился как-то завязанным с первым.


← →
isasa ©   (2006-06-24 10:54) [3]

А что, нельзя CreateProcess оформить в отдельном потоке, а не в главном?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.033 c
2-1153305041
VitGun
2006-07-19 14:30
2006.08.06
Shell Extension. Как?


15-1151944074
sdf13
2006-07-03 20:27
2006.08.06
можно ли писать на Delphi под Pocket PC?


6-1143200723
-FX-
2006-03-24 14:45
2006.08.06
хитрый Proxy редактирующий трафик. Это реально?


1-1151314419
ujhtw
2006-06-26 13:33
2006.08.06
Работа с изображением


15-1152613746
SoftService
2006-07-11 14:29
2006.08.06
J2ME compiler




   Наверх