首页 >后端开发 >C++ >如何在.NET中实现异步流程执行?

如何在.NET中实现异步流程执行?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-05 03:44:40527浏览

How Can I Achieve Asynchronous Process Execution in .NET?

.NET 中的异步进程执行

Process.Start() 方法允许程序员启动外部应用程序或批处理文件的执行,但缺乏异步支持。在使用使用异步/等待模式的控制台应用程序时,此限制可能会带来不便。

幸运的是,有一些解决方法可以实现异步流程执行。虽然 Process.Start() 仅启动进程,但后续执行是在 async/await 范例之外处理的。

如果目的只是启动进程而不等待其完成,可以采用以下方法:

void async RunCommand()
{
    await Task.Run(() => Process.Start("command to run"));
}

但是,如果所需的行为涉及异步等待进程完成,则可以使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn