ホームページ > バックエンド開発 > C++ > C# で非ブロッキング メソッド呼び出しを簡単に行うにはどうすればよいですか?

C# で非ブロッキング メソッド呼び出しを簡単に行うにはどうすればよいですか?

DDD
リリース: 2025-01-18 15:46:08
オリジナル
669 人が閲覧しました

How Can I Make Non-Blocking Method Calls in C# Simply?

C# での非ブロッキング メソッド呼び出しの簡素化

C# では、ノンブロッキング メソッド (メイン スレッドを停止せずに非同期で実行するメソッド) を作成する方法がいくつか提供されています。 WCF の [OperationContract(IsOneWay = true)] 属性はこの機能を提供しますが、単純なシナリオでは過剰になる可能性があります。

最も簡単なアプローチは ThreadPool.QueueUserWorkItem を利用します。このメソッドはタスクをスレッド プールに効率的に追加し、非同期実行を可能にします。

これがわかりやすい例です:

<code class="language-csharp">class Foo
{
    static void Main()
    {
        ThreadPool.QueueUserWorkItem(_ => FireAway()); //Asynchronous execution
        Console.WriteLine("Immediate execution");
    }

    static void FireAway()
    {
        System.Threading.Thread.Sleep(5000);
        Console.WriteLine("Execution after 5 seconds");
    }
}</code>
ログイン後にコピー

代わりに、C# 5.0 以降のバージョンでは Task.Run を提供し、スレッド プールのスレッドで非同期実行を実現するためのより現代的で簡潔な方法を提供します。

<code class="language-csharp">Task.Run(() => FireAway());</code>
ログイン後にコピー

ThreadPool.QueueUserWorkItemTask.Run はどちらも、非同期メソッドの実行中にメインスレッドがブロックされるのを防ぎます。

ただし、Main メソッドが終了する前にメソッドを完了することが不可欠かどうかを検討することが重要です。 ASP.NET のような環境では、非同期操作の早期終了を防ぐために追加のメカニズムが必要になる場合があります。

以上がC# で非ブロッキング メソッド呼び出しを簡単に行うにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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