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

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

Mary-Kate Olsen
Libérer: 2025-01-05 02:53:39
original
531 Les gens l'ont consulté

How to Achieve Asynchronous Process Execution in .NET?

Exécution de processus asynchrone dans .NET

Dans .NET, la méthode Process.Start() est utilisée pour exécuter des applications externes ou des fichiers batch . Cependant, cette méthode est synchrone, ce qui signifie qu'elle bloque le thread appelant jusqu'à la fin du processus.

Pour les scénarios où une exécution asynchrone est souhaitée, vous vous demandez peut-être s'il existe un équivalent à Process.Start() qui vous permet d'attendre son achèvement.

Réponse

Bien qu'il n'y ait pas d'équivalent asynchrone direct de Process.Start(), il existe deux approches pour répondre à ce besoin :

1. Utilisation de Task.Run()

Si vous souhaitez simplement exécuter le processus de manière asynchrone sans attendre sa fin, vous pouvez utiliser la méthode Task.Run() :

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

2. Attendre de manière asynchrone la fin du processus

Si vous devez attendre de manière asynchrone la fin du processus avant de continuer, vous pouvez tirer parti de l'événement Exited et d'un 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;
}
Copier après la connexion

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