スレッドパラメータ(2.0)、「戻り値」、スレッド一時停止について
1. スレッドパラメータ:
に
情報を渡したい場合があります。ここでは、ParameterizedThreadStart デリゲートの例
を使用する必要があります
。private void btRunThread_Click(object sender, EventArgs e)
{
Thread t = new Thread(new ParameterizedThreadStart(this.ThreadRun));
(100
);
private void ThreadRun(object o)
{
this.lbCompleted.Invoke((MethodInvoker)delegate { this.lbCompleted.Text = System.Convert.ToString(o); })
;
2. 同様の機能は
、
プロキシを通じてほぼ実現できます。 例:
class Program
{
static void Main(string[] args)
{
ThreadClass tc = new ThreadClass(new MyDlg(DlgMethod));
ThreadRun)
);
Console.WriteLine
("
2
番目のスレッドの開始"
);
private static void DlgMethod(int i)
{
Console.WriteLine("2 番目のスレッド結果:{0}", i)
}
}
パブリックデリゲート void MyDlg(int i);
クラス ThreadClass
{
プライベート MyDlg myDlg;
public ThreadClass(MyDlg pDlg)
{
this.myDlg = pDlg
}
public void ThreadRun()
{
int total = 0;
for (int i = 0; i < 100; i++)
{
total += i;
}
if (myDlg != null)
{
myDlg(合計)
}
}
;
3. スレッドの一時停止:
(1) .join メソッド
MSDN 注: 標準の COM および SendMessage メッセージ ポンプ処理の実行を継続している間、呼び出しスレッドはスレッドが終了するまでブロックされます。
混乱して自分で試してみたところ、スレッドが join メソッドを呼び出した後、スレッドのタスクが完了するまですべての CPU 時間を占有しているようです。これが事実かどうかわかりませんか?
(2). abort メソッドは
スレッドを即座に終了します
(3)。 識別子の定義例
:
class
Program
{
private static bool stop;
stop = false
;
スレッド t = 新しい ThreadStart(ThreadRun
)
)
;
コンソール.Read()
;
static void ThreadRun()
{
while (!stop)
{
Console.WriteLine("何か仕事をしてください..."
)
}
}
http://www.cnblogs.com/KissKnife/archive/2006/10/03/520463.html