就像标题所示,是否有Process.Start我可以等待的等效项(允许您运行其他应用程序或批处理文件)?
Process.Start
我正在玩一个小型控制台应用程序,这似乎是使用async和await的理想场所,但是我找不到这种情况的任何文档。
我在想的是以下几方面的东西:
void async RunCommand() { var result = await Process.RunAsync("command to run"); }
Process.Start()仅启动该过程,它不会等到完成为止,因此进行该过程没有多大意义async。如果您仍然想这样做,可以执行await Task.Run(() => Process.Start(fileName))。
Process.Start()
async
await Task.Run(() => Process.Start(fileName))
但是,如果您要异步等待过程完成,则可以将Exited事件与一起使用TaskCompletionSource:
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; }