是否存在与Process.Start异步的等效项?

就像标题所示,是否有Process.Start我可以等待的等效项(允许您运行其他应用程序或批处理文件)?


我正在玩一个小型控制台应用程序,这似乎是使用async和await的理想场所,但是我找不到这种情况的任何文档。


我在想的是以下几方面的东西:


void async RunCommand()

{

    var result = await Process.RunAsync("command to run");

}


慕沐林林
浏览 550回答 3
3回答

红糖糍粑

这是另一种方法。与svick和Ohad的答案类似的概念,但是对Process类型使用扩展方法。扩展方式:public static Task RunAsync(this Process process){&nbsp; &nbsp; var tcs = new TaskCompletionSource<object>();&nbsp; &nbsp; process.EnableRaisingEvents = true;&nbsp; &nbsp; process.Exited += (s, e) => tcs.TrySetResult(null);&nbsp; &nbsp; // not sure on best way to handle false being returned&nbsp; &nbsp; if (!process.Start()) tcs.SetException(new Exception("Failed to start process."));&nbsp; &nbsp; return tcs.Task;}包含方法中的示例用例:public async Task ExecuteAsync(string executablePath){&nbsp; &nbsp; using (var process = new Process())&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; // configure process&nbsp; &nbsp; &nbsp; &nbsp; process.StartInfo.FileName = executablePath;&nbsp; &nbsp; &nbsp; &nbsp; process.StartInfo.UseShellExecute = false;&nbsp; &nbsp; &nbsp; &nbsp; process.StartInfo.CreateNoWindow = true;&nbsp; &nbsp; &nbsp; &nbsp; // run process asynchronously&nbsp; &nbsp; &nbsp; &nbsp; await process.RunAsync();&nbsp; &nbsp; &nbsp; &nbsp; // do stuff with results&nbsp; &nbsp; &nbsp; &nbsp; Console.WriteLine($"Process finished running at {process.ExitTime} with exit code {process.ExitCode}");&nbsp; &nbsp; };// dispose process}
打开App,查看更多内容
随时随地看视频慕课网APP