ホームページ >バックエンド開発 >C++ >.NET で非同期プロセスの実行を実現するにはどうすればよいですか?

.NET で非同期プロセスの実行を実現するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-05 02:53:39545ブラウズ

How to Achieve Asynchronous Process Execution in .NET?

.NET での非同期プロセスの実行

.NET では、Process.Start() メソッドを使用して外部アプリケーションまたはバッチ ファイルを実行します。 。ただし、このメソッドは同期です。つまり、プロセスが完了するまで呼び出しスレッドをブロックします。

非同期実行が必要なシナリオでは、待機できる Process.Start() と同等のメソッドがあるかどうか疑問に思うかもしれません。

答え

ないうちにProcess.Start() と直接的に非同期に相当するものでは、このニーズに対応する 2 つのアプローチがあります。

1. Task.Run() の使用

完了を待たずにプロセスを非同期で実行したい場合は、Task.Run() メソッドを利用できます。

void RunCommandAsync()
{
    Task.Run(() => Process.Start("command to run"));
}

2.プロセスの完了を非同期的に待機する

続行する前にプロセスが完了するのを非同期的に待機する必要がある場合は、Exited イベントと 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;
}

以上が.NET で非同期プロセスの実行を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。