Maison > développement back-end > C++ > Comment puis-je réaliser une exécution de processus asynchrone dans .NET ?

Comment puis-je réaliser une exécution de processus asynchrone dans .NET ?

Mary-Kate Olsen
Libérer: 2025-01-05 03:44:40
original
519 Les gens l'ont consulté

How Can I Achieve Asynchronous Process Execution in .NET?

Exécution de processus asynchrone dans .NET

La méthode Process.Start() permet aux programmeurs de lancer l'exécution d'applications externes ou de fichiers batch, mais manque de support asynchrone. Cette limitation peut être gênante lorsque vous travaillez avec des applications console qui utilisent le modèle async/await.

Heureusement, il existe des solutions de contournement pour réaliser une exécution de processus asynchrone. Alors que Process.Start() lance uniquement le processus, l'exécution ultérieure est gérée en dehors du paradigme async/wait.

Si l'intention est simplement de démarrer le processus sans attendre son achèvement, on peut utiliser l'approche suivante :

void async RunCommand()
{
    await Task.Run(() => Process.Start("command to run"));
}
Copier après la connexion

Cependant, si le comportement souhaité implique d'attendre de manière asynchrone la fin du processus, l'événement Exited et un TaskCompletionSource peuvent être combiné :

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;
}
Copier après la connexion

En utilisant la technique ci-dessus, le thread principal peut attendre de manière asynchrone la fin du processus, permettant une intégration transparente avec d'autres opérations asynchrones.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal