これは、APC が I/O 完了コールバックに使用される非常に特殊なケースで、.NET でいくらか公開されます。これは、APC の非常に一般的な用途です。APC と同様に非常に低レベルです。コア メソッドは ThreadPool.BindHandle() であり、コールバックがスレッドプール スレッドでマネージド コードを実行できるように配管を設定します。ただし、重複した I/O を開始するための呼び出しを行うことはできません。ピンボークするのはあなた次第です。それ以外の場合、これは、I/O を実行するさまざまなクラスとその BeginXxxx() メソッド (FileStream、PipeStream、Socket など) によって既に適切にラップされています。
独自の APC に必要な次のことは、スレッドをアラート可能な待機状態にすることです。これは、bAlertable 引数に TRUE 値を指定した WaitForSingleObjectEx() と同等です。これは CLR によって大きくラップされており、マネージド スレッドを安全に中止できるかどうかが非常に重要になるため、待機のアラート可能状態に大きな利害関係があります。ご存知のように、Thread.Join() や Thread.Sleep() などのメソッドを含め、マネージド コードで呼び出すすべての待機はアラート可能です。WaitHandle.WaitXxx オーバーロードの「exitContext」という名前の bool 引数を無視します。これは別のことを意味します。