.NET 中的非同步流程執行
在.NET 中,Process.Start() 方法用於執行外部應用程式或批次處理文件。但是,此方法是同步的,這意味著它會阻塞呼叫線程,直到進程完成。
對於需要非同步執行的場景,您可能想知道是否有與 Process.Start() 等效的方法允許您等待它完成了。
答案
雖然沒有直接的非同步等價物Process.Start(),有兩種方法可以滿足這種需求:
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中文網其他相關文章!