Heim > Backend-Entwicklung > C++ > Wie erreicht man eine asynchrone Prozessausführung in .NET?

Wie erreicht man eine asynchrone Prozessausführung in .NET?

Mary-Kate Olsen
Freigeben: 2025-01-05 02:53:39
Original
575 Leute haben es durchsucht

How to Achieve Asynchronous Process Execution in .NET?

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"));
}
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage