2009年1月22日木曜日

[.Net]スレッドっていろいろある

.Netでのスレッドは大きく分けて以下の通り
1.Threadクラスを使う
2.ThreadPoolクラスを使う
3.デリゲートを使う

となる。

完全に個人的な考えだけど、それぞれの使い分けは
Threadクラス→戻り値がいらない処理で、スレッドを止めたい事がある場合。一番細かい制御が可能。
ThreadPoolクラス→性能を求められたら使う。
デリゲート→スレッドと言ったら基本的にこれ。戻り値が簡単に取れるしコーディングしやすい。

デリゲートの使い方の手順として
1.スレッド処理関数を作る
2.スレッド処理関数と同じ引数・戻り値のデリゲートを宣言し変数を宣言する。
3.コールバック関数を作る。戻り値はvoid、引数はIAsyncResultが1つだけ。
4.スレッドを呼び出す処理を書く。

サンプルは以下に。ただし、今回は処理が終わったことだけを知りたいので、戻り値も引数もなし。
・スレッド処理関数

private static void GetImageFromWebMain(){}


・デリゲート宣言

public delegate void GetImageFromWebDelegate();
public static GetImageFromWebDelegate getImageFromWebDelegate;


・コールバック関数

private static void GetImageFromWebCallBack(IAsyncResult ar){}


・スレッドを呼び出す処理

getImageFromWebDelegate = new GetImageFromWebDelegate(GetImageFromWebMain);
getImageFromWebDelegate.BeginInvoke(new AsyncCallback(GetImageFromWebCallBack), null);


ここにはお世話になってます。

0 件のコメント: