我正在尋找一個快速的替代CreateProcess在Delphi中執行exe中的某些計算,包括XML中的幾個返回值。 目前,我打電話給一個C#的具有特定參數的文件。其中一個電話需要約。 0.5s - 這是方式到昂貴,因爲這個EXE需要被稱爲幾百次(不幸的是,迭代調用,即多線程不會加快工作)。快速替代CreateProcess
我現在的代碼看起來像這樣(找到解決方案來獲取在StackOverflow上的exe somwhere的控制檯輸出)。
IsExecutable := CreateProcess(
nil,
PChar(WorkDir + Exe + CommandLine),
nil,
nil,
True,
HIGH_PRIORITY_CLASS,
nil,
nil,
StartupInfo,
ProcessInformation);
CloseHandle(StdOutPipeWrite);
if IsExecutable then
try
repeat
WasOK := ReadFile(StdOutPipeRead, Buffer, 255, BytesRead, nil);
if BytesRead > 0 then
begin
Buffer[BytesRead] := #0;
Result := Result + Buffer;
end;
until not WasOK or (BytesRead = 0);
WaitForSingleObject(ProcessInformation.hProcess, INFINITE);
finally
CloseHandle(ProcessInformation.hThread);
CloseHandle(ProcessInformation.hProcess);
end
順便說一句,我不是很好的德爾福 - 其實,我覺得有點像「我不知道我在做什麼」狗米姆-事情...
說到IPC,檢查www.cromis.net/blog/downloads/cromis-ipc/ –