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)

2010年05月09日

ヒルベルト曲線

   このエントリーをはてなブックマークに追加 Clip to Evernote
Hilbert

Silverlight3 + C#でヒルベルト曲線を描くプログラムを書いてみました。

再帰処理、イベント、BackgrowndWorker、コードによるUIElementの追加などのサンプルとしてどうぞ。

ソースコードはこちらに掲載しています。

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

2010年03月14日

C#で8クィーンゲームを作成 (あなたは勝てますか?)

   このエントリーをはてなブックマークに追加 Clip to Evernote
Gushwell C# Programming Pageに、「8クィーン・ゲーム」を掲載しました。
Silverlightで実際に対戦できるようにしています。

8×8のチェス盤に2人で交互にクィーンを置いていき、自分の手番のときに置き場所が無いほうが負けというゲームです。
なお、すでに置かれているクィーン(自分が置いたものも含め)の利き筋に新しいクィーンを置くことはできません。
いわゆる8クィーンパズルのゲーム版というところです。


※ボタンをクリックするとゲームが始まります。

この手の思考ゲームの基本の基本だけでプログラムが書けるので、学習用としては、なかなか良い題材だと思います。
ソースコードはこちらで掲載しています。  
Posted by gushwell at 22:54Comments(0)TrackBack(0)

2010年01月17日

シェルピンスキーのギャスケット

   このエントリーをはてなブックマークに追加 Clip to Evernote
1次元セルオートマトンで、シェルピンスキーのギャスケットを描くプログラムを書いてみました。



Silverlightで、BackgroundWorker 、WriteableBitmap を使うサンプルコードとしてどうぞ。
ソースコードは、こちらに載せています。

面白いのは、このプログラムのデータ部を変えるだけで、こんな図も描けます。




こちらは、1次元セルオートマトンのルール30と言われているものです。
このプログラムのソースコードは、 こちらです。
  
Posted by gushwell at 23:46Comments(0)TrackBack(0)

2009年08月09日

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

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

BackgroundWorkerのサンプルコード(3)で掲載したコードとほとんど同じだけど、バックグラウンド処理の結果を受け取れるようにしました。
終了していないのに、結果を取得しようとした場合は、終了するまで待つようにしてあります。
ついでにExecuteメソッドでは、引数を渡せるようにしてあります。
同期するために利用していたManualResetEventですが、代わりにAutoResetEventを使ってみました。


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

2009年08月06日

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

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


BackgroundWorkerは、Formが無くたって使えます。
今回のサンプルコードは、ManualResetEventを使って、終了まで待てるようにしています。
クラスMyWorkerをもうちょっと汎用的にしたいところですが、BackgroundWorkerの サンプルを示すことが目的なので、これで良しとします。

このプログラムを実行してみればわかりますが、worker1とworker2がパラレルに実行されているのが確認できます。

  
Posted by gushwell at 22:54Comments(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)

2009年07月29日

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

   このエントリーをはてなブックマークに追加 Clip to Evernote
BackgroundWorkerで検索して、このブログに来ている人が結構いるようなので、何回かに分けて、BackgroundWorkerを使ったサンプルを載せたいと思います。

まずは、バックグラウンド処理で得られたデータをListBoxに順に表示する例です。
ついでに、ListBoxの自動スクロールもやってます。

当然、ListBoxに項目を追加している間でも、ListBoxの操作(選択など)が可能です。


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