XML のいくつかの戻り値を含む、exe で特定の計算を実行するために、Delphi の CreateProcess に代わる高速な方法を探しています。現在、特定のパラメーターを使用して C#-exe を呼び出しています。これらの呼び出しの 1 つには、約 1 回かかります。0.5 秒 -この exe を数百回呼び出す必要があるため、コストがかかりすぎます (残念なことに、反復呼び出し、つまりマルチスレッドではジョブが高速化されません) 。
私の現在のコードは次のようになります (StackOverflow のどこかにある exe のコンソール出力を取得するソリューションが見つかりました)。
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
ところで、私は Delphi はあまり得意ではありません。