2009年07月29日
BackgroundWorkerのサンプルコード(1)
BackgroundWorkerで検索して、このブログに来ている人が結構いるようなので、何回かに分けて、BackgroundWorkerを使ったサンプルを載せたいと思います。
まずは、バックグラウンド処理で得られたデータをListBoxに順に表示する例です。
ついでに、ListBoxの自動スクロールもやってます。
当然、ListBoxに項目を追加している間でも、ListBoxの操作(選択など)が可能です。
まずは、バックグラウンド処理で得られたデータをListBoxに順に表示する例です。
ついでに、ListBoxの自動スクロールもやってます。
当然、ListBoxに項目を追加している間でも、ListBoxの操作(選択など)が可能です。
2009年07月20日
Silverlight StreamingでSilverlightアプリを公開する
[パズル]多角形の完全グラフで掲載したWPFアプリケーションをSilverlightアプリケーションに書き換え、
Silverlight Streamingのサービスを使って、このページで動作するようにしてみました。
数字を入れて、ボタンを押すとアニメーションが始まります。
参考にしたサイト:[Silverlight 2]アプリケーションをインターネットで公開するには?
WPFアプリからSilverlightアプリに変更するのに必要な修正箇所は、XAMLで1箇所、C#のコードで1箇所でした。
を
と変更。(ボタンのContentは、ButtonからStartに変更)
C#のコードでは、
を
に変更。
Silverlightでは、Brushes.LightSteelBlueクラスが定義されていないので、 これをどうやって他のコードで置き換えるのかがわからずに、調べるのに思いのほか時間がかかりました。
数字を入れて、ボタンを押すとアニメーションが始まります。
参考にしたサイト:[Silverlight 2]アプリケーションをインターネットで公開するには?
WPFアプリからSilverlightアプリに変更するのに必要な修正箇所は、XAMLで1箇所、C#のコードで1箇所でした。
を
と変更。(ボタンのContentは、ButtonからStartに変更)
C#のコードでは、
を
に変更。
Silverlightでは、Brushes.LightSteelBlueクラスが定義されていないので、 これをどうやって他のコードで置き換えるのかがわからずに、調べるのに思いのほか時間がかかりました。
2009年07月12日
どのインターフェースを実装しているのか知りたい
リフレクション:interfaceの情報を得るの続きです。
Type.GetInterfacesメソッドを使うと、ある型がどういったインターフェースを実装しているかを調べることもできます。
以下、実行結果です。
このコードの中で、IsGenericType プロパティを使っていますが、これで、ジェネリッククラスから構築された型かどうかを知ることができます。
その他、Isで始まるプロパティがたくさんあります。
しかし、IsArrayはありますが、IsListはありません。まあ当たり前といえば当たり前ですね。
で、書いてみました。
拡張メソッドにしても良いかも知れませんね。
Type.GetInterfacesメソッドを使うと、ある型がどういったインターフェースを実装しているかを調べることもできます。
以下、実行結果です。
このコードの中で、IsGenericType プロパティを使っていますが、これで、ジェネリッククラスから構築された型かどうかを知ることができます。
その他、Isで始まるプロパティがたくさんあります。
しかし、IsArrayはありますが、IsListはありません。まあ当たり前といえば当たり前ですね。
で、書いてみました。
拡張メソッドにしても良いかも知れませんね。
2009年07月08日
C#3.0のラムダ式とは
2007年8月にアップした記事ですが、なぜか、Googleの検索にヒットしなくなってしまったみたいなので、再度掲載します。
言葉足らずのところがあるけど、なかなか簡潔にまとまっている記事だと思うのですが、検索に引っかからないのはもったいないです。
-----------------------------------------------------------
ラムダ式
このコードは、delegateの動きを説明した C#1.1のコード。
これが、C#2.0になると、こんな書き方になる。
わざわざ Tripleというメソッドを定義する必要がなくなったわけだ。
そして、C#3.0では、
ここまでは、C#2.0 と C#3.0 では、記述方法が変化しただけと見ることもできる。
さらに、(*)の行は、
と書ける。さらに、この(*)の記述が、
と短くすることができる。
いきなり、最後の文を見せられたときは、いきなり出てきた xって何だ?
と面食らったけど、順番に見ていけば、それほど難しくはない。
でも、慣れるのが大変そう。
言葉足らずのところがあるけど、なかなか簡潔にまとまっている記事だと思うのですが、検索に引っかからないのはもったいないです。
-----------------------------------------------------------
ラムダ式
このコードは、delegateの動きを説明した C#1.1のコード。
これが、C#2.0になると、こんな書き方になる。
わざわざ Tripleというメソッドを定義する必要がなくなったわけだ。
そして、C#3.0では、
ここまでは、C#2.0 と C#3.0 では、記述方法が変化しただけと見ることもできる。
さらに、(*)の行は、
と書ける。さらに、この(*)の記述が、
と短くすることができる。
いきなり、最後の文を見せられたときは、いきなり出てきた xって何だ?
と面食らったけど、順番に見ていけば、それほど難しくはない。
でも、慣れるのが大変そう。
2009年07月07日
リフレクション:interfaceの情報を得る
リフレクションの機能を使うと、ある型が、特定のインターフェースに対して、どういったメソッドを実装しているかを知ることができます。
この実行結果は、
となります。get_で始まるメソッドは、プロパティに対応しています。
この実行結果は、
となります。get_で始まるメソッドは、プロパティに対応しています。
2009年07月05日
[パズル]多角形の完全グラフ
今回の問題は、前回の「[パズル](n*2+1)多角形の一筆書き」の続きです。
今度は、多角形の頂点の数が偶数のときでも、完全グラフが描けるようにするプログラムです。
でも、偶数のときは一筆書きはできないので、できるだけ、ペンの移動が少なくなうようにというもが問題なのですが、ペンの移動量については無視し、とりあえず、完全グラフが描かれるようにしました。
ただし、奇数のときには、一筆書きになるようになっています。
頂点の数が奇数か偶数かで処理を分岐させないで、これをやれるようにしています(SearchPathメソッド)。
でもちょっとややこしい再帰処理になってしまいました。
PerfectGraphクラスのほうは、LINQ使ってそれぞれのメソッドを簡潔に書けたと思います。
前回同様、WPFで、DoubleAnimationを使ってアニメーションさせています。この部分は、前回のコードと変わっていません。(多分)

XAMLとC#のコードを張り付ければ、動くと思うので、興味ある方は動かしてみてください。
なお、今年初めから『ナノピコ教室・プログラミング問題集』(駒木悠二+有澤誠 編 共立出版株式会社)に掲載されている問題を解き、ここに掲載してきましたが、興味ある問題は、ほぼやり終えたので、いったん終了したいと思います。
頭の体操になったし、LINQの勉強にもなったし、再帰処理の勉強になったし、最後は、WPFにも挑戦できたしで、なかなか楽しかったですね。
『続・ナノピコ教室』も手元にあるので、こちらもいつか挑戦したいと思います。
※当記事に掲載したコードは、『ナノピコ教室・プログラミング問題集』(駒木悠二+有澤誠 編 共立出版株式会社)に掲載されている問題を一部変更し、GushwellがC#で解いたものです。
今度は、多角形の頂点の数が偶数のときでも、完全グラフが描けるようにするプログラムです。
でも、偶数のときは一筆書きはできないので、できるだけ、ペンの移動が少なくなうようにというもが問題なのですが、ペンの移動量については無視し、とりあえず、完全グラフが描かれるようにしました。
ただし、奇数のときには、一筆書きになるようになっています。
頂点の数が奇数か偶数かで処理を分岐させないで、これをやれるようにしています(SearchPathメソッド)。
でもちょっとややこしい再帰処理になってしまいました。
PerfectGraphクラスのほうは、LINQ使ってそれぞれのメソッドを簡潔に書けたと思います。
前回同様、WPFで、DoubleAnimationを使ってアニメーションさせています。この部分は、前回のコードと変わっていません。(多分)


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