thread作成前に準備しておくこと
- threadとして動作させる関数:threadStart()
- thread名 :do_thread
threadの作成
Thread登録
Thread do_thread = new Thread(new threadStart());
Threadの起動(バックグラウンドで動作させる場合)
do_thread.IsBackground = true;
do_thread.Start();
Threadの停止
通常方法
強制終了
MSおススメ
スレッド対象関数をbool値を使い実行するか制御する
// スレッドの対象クラスの作成
class threadWorker{
private volatile bool _shuldstop;
public threadWorker(){
//コンストラクタ
_shuldstop = false;
}
public void doWork(){
if(!_shuldstop){
//スレッド処理
}
}
public void requestStop(){
_shuldstop = ture;
}
}
// 実際に動作させる
//スレッド関数の作成
threadWorker workerObject = new threadWorker();
//Thread登録
Thread workerThread = new Thread(workerObject.doWork());
//Threadスタート
workerThread.Start();
//スレッド内部動作のストップ
workerObject.requestStop();
//Joinで終了
workerThread.Join();
スレッドセーフな呼び出し(スレッドからUIを操作など)
- [文法 C#編]のデリゲートを参照
- MSのホームページを参考
delegate void setTextCallback(string msg , string title , int num);
public void ChangeMessage(string msg , string title , int num){
if(InvokeRequired){
setTextCallback d = new setTextCallback(ChangeMessage);
this.Invoke(d , new object[]{msg , title , num});
}
else{
this.label_msg.Text = msg;
switch(num)
{
case 1:
this.label_title1.Text = title;
break;
case 2:
this.label_title3.Text = title;
break;
case 3:
this.label_title3.Text = title;
break;
default:
}
}
}
最終更新:2009年04月17日 10:42