次の方法で共有


Async.AsBeginEnd<'Arg,'T> メソッド (F#)

指定した非同期計算の .NET Framework 非同期プログラミング モデル (APM: Asynchronous Programming Model) を実装するために使用できる 3 つの関数を作成します。

名前空間/モジュール パス: Microsoft.FSharp.Control

アセンブリ: FSharp.Core (FSharp.Core.dll 内)

// Signature:
static member AsBeginEnd : ('Arg -> Async<'T>) -> ('Arg * AsyncCallback * obj -> IAsyncResult) * (IAsyncResult -> 'T) * (IAsyncResult -> unit)

// Usage:
Async.AsBeginEnd (computation)

パラメーター

  • computation
    型: 'Arg ->Async<'T>

    従来の .NET Framework 非同期プログラミング モデルに分割する非同期計算を生成する関数。

戻り値

begin、end、および cancel をメンバーとするタプル。

解説

.NET Framework 非同期プログラミング モデルの使用法の詳細については、「非同期プログラミング モデル (APM)」を参照してください。

begin、end、および cancel 関数は、通常は Begin、End、および Cancel というプレフィックスを持つメンバーとして公開される必要があり、次のように型定義内で使用できます。

 let beginAction,endAction,cancelAction =
     Async.AsBeginEnd (fun arg -> computation)
 member x.BeginSomeOperation(arg, callback ,state:obj) =
     beginAction(arg, callback, state)
 member x.EndSomeOperation(iar) = endAction(iar)
 member x.CancelSomeOperation(iar) = cancelAction(iar)

非同期計算で引数がない場合、AsBeginEnd は次のように使用されます。

 let beginAction,endAction,cancelAction =
     Async.AsBeginEnd (fun () -> computation)
 member x.BeginSomeOperation(callback, state:obj) =
     beginAction((), callback, state)
 member x.EndSomeOperation(iar) = endAction(iar)
 member x.CancelSomeOperation(iar) = cancelAction(iar)

非同期計算で引数が 2 つある場合、AsBeginEnd は次のように使用されます。

 let beginAction,endAction,cancelAction =
     Async.AsBeginEnd (fun arg1 arg2 -> computation)
 member x.BeginSomeOperation(arg1, arg2, callback, state:obj) =
     beginAction((), callback, state)
 member x.EndSomeOperation(iar) = endAction(iar)
 member x.CancelSomeOperation(iar) = cancelAction(iar)

どちらの場合も、結果として生成される API は、他の .NET Framework 言語で使用される API に似ており、他の .NET Framework 言語から使用されるコンポーネントで非同期計算を公開するのに役立ちます。

プラットフォーム

Windows 8、Windows 7、Windows Server 2012 で Windows Server 2008 R2

バージョン情報

F# コア ライブラリのバージョン

サポート: ポータブル 2.0、4.0

参照

関連項目

Control.Async クラス (F#)

Microsoft.FSharp.Control 名前空間 (F#)

AsyncCallback

IAsyncResult