我正在寻找 Delphi 中 CreateProcess 的快速替代方案,以在 exe 中执行某些计算,包括 XML 中的几个返回值。目前,我正在调用带有某些参数的 C#-exe。其中一个电话大约需要。0.5s - 这是一种昂贵的方式,因为这个 exe 需要被调用几百次(不幸的是迭代调用,即多线程不会加速工作)。
我当前的代码看起来像这样(在 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
顺便说一句,我不是很好的德尔福 - 实际上,我有点像“我不知道我在做什么”狗模因的东西......