最近、C#に目覚めた気がする

C#が面白い。


Visual Stadioを使う場合と、そのままべたべたメモ帳で作る場合があるが、
まぁどちらもありかなと思う。


仕事上Eclipseを使用しているためかVSのショートカットらが、
使いづらく感じて、いらいらしたらメモ帳でやる感じ。


あと、VSってアプリそのもののレンダリングって遅くないかしら?
ビデオカードの性能なんかな。


とりあえず、いまものすごい使うことをメモっておこう。


コンポーネントから起動させたロジックで、
重い処理を行う場合に、スレッドを使用する。


Thread t = new Thread( new ThreadStart( [method名] ) );


Threadの使い方はJavaアプレットとかと同じようだ。
ThreadStartがいまいちよくわかってないが、まぁこれで動く。


ただ、method名しか渡せないので、methodの引数が渡せない(?)。


Classを作成し、フィールド変数にたいして、引数と同等なものを保持させて、
ClassのメソッドをThreadStartで実行する


というのを良く見るが、正直、ダサい。


もうちょいググると、
delegateでメソッドを定義して、それを非同期で実行する そうだ。


わからん。前々からdelegeteが理解できないと思っていたんだなぁ。
JavaScriptのfunction形とリフレクションを合わせたようなものかなぁ。


そこから、InvokeMethodで実行するとできるそうな…。


Classの外で、
public deledate [methodの型] [仮のmethod名]( [methodの引数] );


メソッドを実行したい箇所で、
[仮のmethod名] method = new [仮のmethod名]([実際のmethod名]);
IAsyncResult ar = method.BeginInvoke([methodの引数], null, null);
//method.EndInvoke(ar);
とやると、実行もとのFormをロックせずに重い処理が実行できる。
メソッドにも引数を渡せる。


最後のEndInvokeはいるのかね…、いまいちよくわからない。


まぁ、これで動くので今日はこれでよしとする。