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")); }
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; }
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!