2015年3月4日水曜日

WPFでDoEventsを実現する

WindowsプログラミングというかVisualBasicの古くからあるおまじない的なメソッドとしてDoEventsがあります。これはOS側に処理を一旦渡す処理を行ってくれるので、ループ処理で重くなったUI描画を軽くしたい(実行させたい)ときに使う常套手段でした。昔のWindowsは擬似マルチタスクでしたからこのような処理が有効でしたが、現在はマルチスレッド化で対応するのが奨励されています。
ただ、マルチスレッド化するまでもない処理もあるわけで、.Net Frameworkに移行してからも「Application.DoEvents」というメソッドが残っており利用されてきましたが、WPFのフレームワークではそれがなくなってしまいました。
で、その代替手段が下記のコードになります。DispacherFrameというWPFのUIキューを呼び出してそれをInvokerにより実行させることで、UIの描画処理を行わせてます。



0 件のコメント:

コメントを投稿