.NET での非同期プロセスの実行
.NET では、Process.Start() メソッドを使用して外部アプリケーションまたはバッチ ファイルを実行します。 。ただし、このメソッドは同期です。つまり、プロセスが完了するまで呼び出しスレッドをブロックします。
非同期実行が必要なシナリオでは、待機できる Process.Start() と同等のメソッドがあるかどうか疑問に思うかもしれません。
答え
ないうちにProcess.Start() と直接的に非同期に相当するものでは、このニーズに対応する 2 つのアプローチがあります。
1. Task.Run() の使用
完了を待たずにプロセスを非同期で実行したい場合は、Task.Run() メソッドを利用できます。
void RunCommandAsync() { Task.Run(() => Process.Start("command to run")); }
2.プロセスの完了を非同期的に待機する
続行する前にプロセスが完了するのを非同期的に待機する必要がある場合は、Exited イベントと TaskCompletionSource を利用できます:
static Task<int> RunProcessAsync(string fileName) { var tcs = new TaskCompletionSource<int>(); var process = new Process { StartInfo = { FileName = fileName }, EnableRaisingEvents = true }; process.Exited += (sender, args) => { tcs.SetResult(process.ExitCode); process.Dispose(); }; process.Start(); return tcs.Task; }
以上が.NET で非同期プロセスの実行を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。