首頁 > 後端開發 > C++ > .NET中如何實現非同步流程執行?

.NET中如何實現非同步流程執行?

Mary-Kate Olsen
發布: 2025-01-05 02:53:39
原創
532 人瀏覽過

How to Achieve Asynchronous Process Execution in .NET?

.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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板