Asynchrone Prozessausführung in .NET
In .NET wird die Process.Start()-Methode zum Ausführen externer Anwendungen oder Batchdateien verwendet . Diese Methode ist jedoch synchron, d. h. sie blockiert den aufrufenden Thread, bis der Prozess abgeschlossen ist.
Für Szenarien, in denen eine asynchrone Ausführung gewünscht ist, fragen Sie sich möglicherweise, ob es ein Äquivalent zu Process.Start() gibt, mit dem Sie warten können es ist abgeschlossen.
Antwort
Obwohl es kein direktes asynchrones Äquivalent von Process.Start() gibt, Es gibt zwei Ansätze, um diesem Bedarf gerecht zu werden:
1. Verwenden von Task.Run()
Wenn Sie den Prozess einfach asynchron ausführen möchten, ohne auf seinen Abschluss zu warten, können Sie die Methode Task.Run() verwenden:
void RunCommandAsync() { Task.Run(() => Process.Start("command to run")); }
2. Asynchrones Warten auf den Abschluss des Prozesses
Wenn Sie asynchron auf den Abschluss des Prozesses warten müssen, bevor Sie fortfahren, können Sie das Exited-Ereignis und eine TaskCompletionSource nutzen:
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; }
Das obige ist der detaillierte Inhalt vonWie erreicht man eine asynchrone Prozessausführung in .NET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!