« new EventHandler | Main | MCE Keyboard »


Asynchronous Pattern

Asynchronous Design Pattern Overview は .NET 1.x で定められた非同期のガイドラインだが、BeginInvoke/EndInvoke による実装では使いづらい場面もある。また AsyncCallback が呼ばれるスレッドについて規定がないので、実装に迷う。

Component 用と銘打ってはあるが、新しい Implementing the Asynchronous Pattern for Components では event を中心とした新しいモデルを提供している。Event のスレッドについても、.NET 2.0 で新しく導入された AsyncOperation と AsyncOperationManager を使って上げろ、と書いている。

この AsyncOperation は、これも .NET 2.0 で新しく導入された SynchronizationContext を使って同期を図る。

SynchronizationContext は、Windows Forms 環境内では Control.Invoke を使い、それ以外では ThreadPool を使って Send/Post の概念を実装する。.NET 1.x における ISynchronizationObject は、インターフェースとして仮想化されているとは言え、実質 Windows Forms 以外の実装がなかったので、一歩進んだと言えそう。Avalon を睨み、message queue を一段隠蔽したのか、という気もするが、Avalon でも message queue は完全には消えないので不明。

AsyncOperation では SynchronizationContext の Post しか利用できないので、event を上げておいてその event handler の処理が終わってから何かすることができない、というのがちょっと使いにくい。その場合には SynchronizationContext を直接使え、ということか。


« new EventHandler | Main | MCE Keyboard »


Please let me know if you're looking for a article author for your weblog. You have some really good articles and I believe I would be a good asset. If you ever want to take some of the load off, I'd absolutely love to write some articles for your blog in exchange for a link back to mine. Please shoot me an e-mail if interested. Many thanks!

Posted by: Jenni | 2014.04.21 at 07:22 AM

Heya i am for the primary time here. I found this board and I to find It truly useful & it helped me out a lot. I am hoping to present one thing again and help others like you helped me.

Posted by: Darlene | 2014.05.16 at 07:07 AM

Post a comment

(Not displayed with comment.)


TrackBack URL for this entry:

Listed below are links to weblogs that reference Asynchronous Pattern:

« new EventHandler | Main | MCE Keyboard »