C# 中的非同步進程執行
問題:
問題:在. Process.Start方法允許我們執行外部應用程式或執行批次檔。但是,此方法是同步的,這意味著它會阻塞呼叫線程,直到進程完成。是否有 Process.Start 的非同步替代方法可以讓我們等待流程完成?
答案:
雖然 Process.Start 是同步方法,但有一些方法在C#中實現非同步進程執行。這裡有兩種方法:private async void RunCommandAsync() { await Task.Run(() => Process.Start("command to run")); }
如果您只想非同步啟動進程,可以使用 Task.Run 方法。這將創建一個新線程並在該線程上執行進程,從而釋放呼叫線程。
private async 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 await tcs.Task; }
以上是C#如何實現非同步流程執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!