最近、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はいるのかね…、いまいちよくわからない。
まぁ、これで動くので今日はこれでよしとする。