2012年11月18日

WPFサンプル:ProgressBar (Taskクラス使用によるバックグラウンド処理)

   このエントリーをはてなブックマークに追加 Clip to Evernote
BackgroundWorkerを使ったProgressBarのサンプルを約半月前に載せましたが、
今度は、.NET Framework4から提供されている Taskクラスを使ったサンプルコードです。

WPFProgressBar2-1

WPFProgressbar2-2

サンプルプログラムなので、2種類のProgressBarを配置しています。

Task.Factory.StartNewメソドでバックグラウンドで処理を走らせ、ContinueWithメソッドで
終了した時と、キャンセルされた時の処理を記述しています。
なお、処理をキャンセルするには、CancellationTokenSourceクラスを利用する必要があります。

ProgressBarの表示を更新するために、バックグラウンドで動作している MyActionメソッドでも
Taskクラスを利用しています。Taskクラスの使い方を示すために、あえて、先ほどとは別の書き方
にしています。
アプリケーションのUIスレッドでTaskを動作させるために、TaskScheduler.FromCurrentSynchronizationContext()で
取得した値を、Task.Startメソッドに渡しています。






この記事へのコメント
Task.ContinueWithメソッドにはTaskSchedulerを受け取るオーバーロードがあるので、そちらを使う方がより効率が良いと思いますー。ご参考までm(_ _)m
http://msdn.microsoft.com/ja-jp/library/dd991174.aspx
Posted by xin9le at 2012年11月18日 23:12
ありがとうございます。
そうなんですよね。書いていてどうもUI側のコードが気に入らなかったんですよね。
コード直しておきました。
Posted by Gushwell at 2012年11月19日 22:36
 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/52287338