ホームページ > バックエンド開発 > C++ > `ThreadPool.QueueUserWorkItem` と `Task.Run` を使用して C# で非ブロッキング メソッド呼び出しを行う方法

`ThreadPool.QueueUserWorkItem` と `Task.Run` を使用して C# で非ブロッキング メソッド呼び出しを行う方法

Patricia Arquette
リリース: 2025-01-18 16:02:09
オリジナル
1001 人が閲覧しました

How to Make Non-Blocking Method Calls in C# Using `ThreadPool.QueueUserWorkItem` and `Task.Run`?

C# でのノンブロッキング メソッド呼び出し: ThreadPool.QueueUserWorkItemTask.Run

の使用

C# では、メソッドをノンブロックで実行できるため、メソッドの完了を待たずにスレッドが実行を継続できます。

最も直接的な方法は、ThreadPool.QueueUserWorkItem メソッドを使用することです。これは、非同期で実行されるメソッドを指定する WaitCallback デリゲートをパラメーターとして受け取ります。

例:

<code class="language-csharp">using System.Threading;

class Foo
{
    static void Main()
    {
        // FireAway将在后台执行
        ThreadPool.QueueUserWorkItem(o => FireAway());

        Console.WriteLine("立即执行");
    }

    static void FireAway()
    {
        Thread.Sleep(5000);
        Console.WriteLine("5秒后执行");
    }
}</code>
ログイン後にコピー

この例では、FireAway メソッドがスレッド プールのキューに入れられ、メイン スレッドは非同期呼び出しの開始直後に実行を継続します。

別の方法: Task.Run

タスクを非同期で実行するためのより現代的で簡潔な方法は、Task.Run メソッドを使用することです。このメソッドは、非同期操作を表す Task オブジェクトを返します。

例:

<code class="language-csharp">using System.Threading.Tasks;

class Foo
{
    static void Main()
    {
        // FireAway将在后台执行
        Task.Run(() => FireAway());

        Console.WriteLine("立即执行");
    }

    static void FireAway()
    {
        Thread.Sleep(5000);
        Console.WriteLine("5秒后执行");
    }
}</code>
ログイン後にコピー

ThreadPool.QueueUserWorkItemTask.Run はどちらも、C# でメソッドをノンブロッキングに実行する効率的な方法を提供します。ただし、これらのテクノロジーをさまざまなシナリオで使用する場合は、潜在的な影響と制限を考慮することが重要です。

以上が`ThreadPool.QueueUserWorkItem` と `Task.Run` を使用して C# で非ブロッキング メソッド呼び出しを行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート