C# の非同期プログラミングパターン

.NET でみられる非同期プログラミングモデルのパターンは主に三つあります。APM、EAP、TAP の三つです。ここでは、それらの大まかな分類を紹介します。

APM (非同期プログラミングモデル)

APM (非同期プログラミングモデル) は Asynchronous Programming Model の略です。

APM は IAsyncResult インターフェイスを利用するものです。

具体的には BeginMethodName で処理を開始して、 EndMethodName という二つのメソッドを実装するタイプの非同期プログラミングモデルです。

Begin... で処理を開始します。開始した処理が時間のかかる処理であっても、それは裏側で処理が実行されるので、 Begin... メソッド自体は返ってきます。

後で処理結果を得るために End... メソッドを呼び出します。まだ処理が終わっていない場合はここで処理がブロックされます。

EAP (イベントベースの非同期プログラミング)

EAP (イベントベースの非同期プログラミング) は Event-based Asynchronous Programming の略です。

EAP は非同期処理の終了確認に、イベントハンドラのコールバックを利用するタイプの非同期プログラミングモデルです。

XXXCompletedEventHandler というようなイベントハンドラをセットしてから、ProcessAsync というメソッドを呼び処理を開始するタイプです。

TAP (タスクベース非同期パターン)

TAP (タスクベース非同期パターン) は Task-based Asynchronous Pattern の略です。

TAP では、処理の開始は MethodNameAsync という形式をとります。 そしてその戻り値を、Task または Task<T> または void とします。Task の場合はその結果は void 型、Task<T> では結果が T 型です。

Task を待つには await を使います。そして await を利用するメソッドには async を付けるというところがポイントになります。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 C# 入門