ott*_*uit 2 delphi performance pascal exe createprocess
我正在寻找Delphi中CreateProcess的快速替代方法来在exe中执行某些计算,包括XML中的几个返回值.目前,我正在使用某些参数调用C#-exe.其中一个电话约需要.0.5秒-这是方式昂贵,因为此exe需要调用几百次(unfortunatley反复调用,即多线程不会加快工作).
我当前的代码看起来像这样(找到解决方案来获取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
Run Code Online (Sandbox Code Playgroud)
顺便说一下,我不是很好的德尔福 - 实际上,我觉得"我不知道我在做什么"的狗咪模因......
创建新流程非常昂贵.没有其他选择CreateProcess.这里没有快速修复.没有神奇的按钮可以让流程创建速度超快.
解决问题的方法是停止创建一个新流程.在您的流程中执行此任务.
| 归档时间: |
|
| 查看次数: |
3000 次 |
| 最近记录: |