「Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
- 非同期化フレームワークは、
APM(Asynchronous Programming Model)、
EAP(Event-based Asynchronous Pattern)に分類されるパターン。
- 主スレッドから副スレッドを使用して非同期呼び出しを行う。
- 副スレッド(非同期スレッド)から結果表示(UI更新)を行う。
- 非同期呼び出しの結果はControl.Invoke、Dispatcher.Invoke のメカニズムにより
Windowsメッセージングキューを使用して主スレッド経由で画面に反映される。
- これらの非同期化フレームワークは、 3層C/S方式と相性が良く、
- Windows Forms、WPF / XBAPの双方に対応している。
- GUIからのサーバ呼出に利用できる(例えば、OpenTP1、Java Webサービスなど)。
比較 †
async/awaitとの比較。
- async/awaitは、
- TAP(Task-based Asynchronous Pattern)に分類されるパターン。
- Taskを返す非同期メソッドを使用する場合は、async/awaitを使用する。
- 非同期呼出フレームワークは、async/awaitと比べ、
- 問題発生時に、デバッグがし易い。
- また、非同期処理側のスレッド数を厳密に制御できる。
などの利点がある。
必要に応じて、選択的に使用すると良い。
参考 †
ライブラリ †
https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Frameworks/Infrastructure/Framework/RichClient/Asynchronous/BaseAsyncFunc.cs
SlideShare? †