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メソッドに渡しています。




  

Posted by gushwell at 23:06Comments(2)TrackBack(0)

2012年10月30日

WPFサンプル:ProgressBar (BackgroundWorker使用)

   このエントリーをはてなブックマークに追加 Clip to Evernote
これまで、「WPFサンプル」では、C#のまともなコードを載せていませんでしたが、
やっとC#のコードが活躍するサンプルにたどり着きました。
今日は、進行状況を示すProgressBarのサンプルです。
今回のサンプルでは、バックグランド処理に、BackgroundWorkerクラスを使っています。

※ .NET Framework4 から導入されたTask クラスを使ったサンプルもそのうち示したいと思います。

ProgressBarは、2つ用意し、IsIndeterminate = false と trueの2つの動きが分かるようにしました。

非同期処理のために、BackgroundWorkerをラップした独自クラスを定義して、非同期処理を書いています。キャンセル処理も可能です。
RunAsyncメソッドでは、2つの引数(Action<>デリゲート)があり、一つは、処理中のGUI処理を記述し、
2つめの引数では、終了処理を記述します。isCancelで途中で終了したかどうかが分かります。

WPFSampleProgressBar1



  
Posted by gushwell at 22:30Comments(0)TrackBack(0)

2009年08月02日

BackgroundWorkerのサンプルコード(2)

   このエントリーをはてなブックマークに追加 Clip to Evernote
BackgroundWorkerのサンプルコード(1)

今度は、処理の進行状況をプログレスバーで表示する例です。
途中で、処理をキャンセルする例にもなっています。

Form1のボタンをクリックすると、Form2が開き、処理を開始します。
処理の進行状況は、プログレスバーで表示され、処理が終わると 自動的にForm2が閉じるというものです。
Form2には、キャンセルボタンが配置されていて、キャンセルボタンを押すと 処理を中止します。




  
Posted by gushwell at 23:29Comments(0)TrackBack(0)