2009年07月29日

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

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

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

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


  

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

2009年07月20日

Silverlight StreamingでSilverlightアプリを公開する

   このエントリーをはてなブックマークに追加 Clip to Evernote
[パズル]多角形の完全グラフで掲載したWPFアプリケーションをSilverlightアプリケーションに書き換え、 Silverlight Streamingのサービスを使って、このページで動作するようにしてみました。

数字を入れて、ボタンを押すとアニメーションが始まります。


参考にしたサイト:[Silverlight 2]アプリケーションをインターネットで公開するには?

WPFアプリからSilverlightアプリに変更するのに必要な修正箇所は、XAMLで1箇所、C#のコードで1箇所でした。




と変更。(ボタンのContentは、ButtonからStartに変更)

C#のコードでは、



に変更。

Silverlightでは、Brushes.LightSteelBlueクラスが定義されていないので、 これをどうやって他のコードで置き換えるのかがわからずに、調べるのに思いのほか時間がかかりました。
  
Posted by gushwell at 22:05Comments(0)TrackBack(0)

2009年07月12日

どのインターフェースを実装しているのか知りたい

   このエントリーをはてなブックマークに追加 Clip to Evernote
リフレクション:interfaceの情報を得るの続きです。

Type.GetInterfacesメソッドを使うと、ある型がどういったインターフェースを実装しているかを調べることもできます。



以下、実行結果です。


このコードの中で、IsGenericType プロパティを使っていますが、これで、ジェネリッククラスから構築された型かどうかを知ることができます。
その他、Isで始まるプロパティがたくさんあります。

しかし、IsArrayはありますが、IsListはありません。まあ当たり前といえば当たり前ですね。
で、書いてみました。
拡張メソッドにしても良いかも知れませんね。

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

2009年07月08日

C#3.0のラムダ式とは

   このエントリーをはてなブックマークに追加 Clip to Evernote
2007年8月にアップした記事ですが、なぜか、Googleの検索にヒットしなくなってしまったみたいなので、再度掲載します。
言葉足らずのところがあるけど、なかなか簡潔にまとまっている記事だと思うのですが、検索に引っかからないのはもったいないです。

-----------------------------------------------------------
ラムダ式


このコードは、delegateの動きを説明した C#1.1のコード。

これが、C#2.0になると、こんな書き方になる。

わざわざ Tripleというメソッドを定義する必要がなくなったわけだ。

そして、C#3.0では、

ここまでは、C#2.0 と C#3.0 では、記述方法が変化しただけと見ることもできる。
さらに、(*)の行は、

と書ける。さらに、この(*)の記述が、

と短くすることができる。

いきなり、最後の文を見せられたときは、いきなり出てきた xって何だ?
と面食らったけど、順番に見ていけば、それほど難しくはない。
でも、慣れるのが大変そう。
  
Posted by gushwell at 22:26Comments(0)TrackBack(0)

2009年07月07日

リフレクション:interfaceの情報を得る

   このエントリーをはてなブックマークに追加 Clip to Evernote
リフレクションの機能を使うと、ある型が、特定のインターフェースに対して、どういったメソッドを実装しているかを知ることができます。


この実行結果は、


となります。get_で始まるメソッドは、プロパティに対応しています。
  
Posted by gushwell at 23:59Comments(0)TrackBack(0)

2009年07月05日

[パズル]多角形の完全グラフ

   このエントリーをはてなブックマークに追加 Clip to Evernote
今回の問題は、前回の「[パズル](n*2+1)多角形の一筆書き」の続きです。

今度は、多角形の頂点の数が偶数のときでも、完全グラフが描けるようにするプログラムです。
でも、偶数のときは一筆書きはできないので、できるだけ、ペンの移動が少なくなうようにというもが問題なのですが、ペンの移動量については無視し、とりあえず、完全グラフが描かれるようにしました。
ただし、奇数のときには、一筆書きになるようになっています。

頂点の数が奇数か偶数かで処理を分岐させないで、これをやれるようにしています(SearchPathメソッド)。
でもちょっとややこしい再帰処理になってしまいました。
PerfectGraphクラスのほうは、LINQ使ってそれぞれのメソッドを簡潔に書けたと思います。

前回同様、WPFで、DoubleAnimationを使ってアニメーションさせています。この部分は、前回のコードと変わっていません。(多分)

PerfectGraph1PerfectGraph2

XAMLとC#のコードを張り付ければ、動くと思うので、興味ある方は動かしてみてください。

なお、今年初めから『ナノピコ教室・プログラミング問題集』(駒木悠二+有澤誠 編 共立出版株式会社)に掲載されている問題を解き、ここに掲載してきましたが、興味ある問題は、ほぼやり終えたので、いったん終了したいと思います。
頭の体操になったし、LINQの勉強にもなったし、再帰処理の勉強になったし、最後は、WPFにも挑戦できたしで、なかなか楽しかったですね。
『続・ナノピコ教室』も手元にあるので、こちらもいつか挑戦したいと思います。




※当記事に掲載したコードは、『ナノピコ教室・プログラミング問題集』(駒木悠二+有澤誠 編 共立出版株式会社)に掲載されている問題を一部変更し、GushwellがC#で解いたものです。  
Posted by gushwell at 22:35Comments(0)TrackBack(1)

2009年07月01日

AutoResetEvent の簡単なサンプル

   このエントリーをはてなブックマークに追加 Clip to Evernote
AutoResetEvent の簡単なサンプルです。

ManualResetEvent の簡単なサンプルと見比べてみると、その違いがわかります。

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