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 件のコメント:
コメントを投稿