非同期プログラミングモデル (Asynchronous Programming Model : APM)

概要

APMをサポートする型

  • System.IO.Stream から派生している、ハードウェアデバイスと通信するクラス
  • System.IO.Ports.SerialPort
  • System.Net.Dns
  • System.Net.Sockets.Socket
  • System.Net.WebRequest から派生しているクラス
  • System.Data.SqlClient.SqlCommand

終了を待機する方法

  • 完了まで待つ … EndXxxメソッドで待つ
  • ポーリング … IsCompletedプロパティを定期的に確認
  • メソッドのコールバック

非同期デリゲート (Asynchronous delegates)

IAsyncResult インターフェイス

非同期操作の結果を表します。

プロパティ 内容
object AsyncState  
WaitHandle AsyncWaitHandle  
bool CompletedSynchronously  
bool IsCompleted  
プロパティ - IAsyncResult インターフェイス (System) | Microsoft Learn

型ごとの処理方法

System.IO.Stream

.NET 4.5以降では、これの代わりにReadAsync()を用います。

[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public virtual IAsyncResult BeginRead(
    byte[] buffer,
    int offset,
    int count,
    AsyncCallback callback,
    object state
)
Stream.BeginRead メソッド (Byte[], Int32, Int32, AsyncCallback, Object) (System.IO) | MSDN

参考

参考書

Microsoft Learnから検索