Heim > Backend-Entwicklung > C++ > Wie kann ich eine asynchrone Prozessausführung in .NET erreichen?

Wie kann ich eine asynchrone Prozessausführung in .NET erreichen?

Mary-Kate Olsen
Freigeben: 2025-01-05 03:44:40
Original
522 Leute haben es durchsucht

How Can I Achieve Asynchronous Process Execution in .NET?

Asynchrone Prozessausführung in .NET

Mit der Process.Start()-Methode können Programmierer die Ausführung externer Anwendungen oder Batchdateien initiieren. aber es fehlt die asynchrone Unterstützung. Diese Einschränkung kann unpraktisch sein, wenn Sie mit Konsolenanwendungen arbeiten, die das Async/Wait-Muster verwenden.

Glücklicherweise gibt es Problemumgehungen, um eine asynchrone Prozessausführung zu erreichen. Während Process.Start() lediglich den Prozess initiiert, erfolgt die nachfolgende Ausführung außerhalb des Async/Wait-Paradigmas.

Wenn die Absicht lediglich darin besteht, den Prozess zu starten, ohne auf seinen Abschluss zu warten, kann man den folgenden Ansatz verwenden :

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

Wenn das gewünschte Verhalten jedoch das asynchrone Warten auf den Abschluss des Prozesses beinhaltet, können das Exited-Ereignis und eine TaskCompletionSource sein kombiniert:

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

Durch die Verwendung der oben genannten Technik kann der Hauptthread asynchron auf den Abschluss des Prozesses warten und so eine nahtlose Integration mit anderen asynchronen Vorgängen ermöglichen.

Das obige ist der detaillierte Inhalt vonWie kann ich eine asynchrone Prozessausführung in .NET erreichen?. 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