110,577
社区成员
发帖
与我相关
我的任务
分享
private void button1_Click(object sender, EventArgs e) {
Thread tr = new Thread(
() => {
for (int i = 0; i < 10; i++) {
this.Invoke((EventHandler)delegate {
button1.Text = i.ToString();
//Thread.Sleep(100); // 如果Sleep放在此处,界面会假死,且不会有数字递增的效果
});
Thread.Sleep(100); // 如果Sleep放在此处,OK
}
}
);
tr.Start();
}
MessageBox.Show("Thread.CurrentThread.ManagedThreadId 1:" + Thread.CurrentThread.ManagedThreadId);
Thread tr = new Thread(
() => {
for (int i = 0; i < 1; i++) {
this.Invoke((EventHandler)delegate {
MessageBox.Show("Thread.CurrentThread.ManagedThreadId 2:" + Thread.CurrentThread.ManagedThreadId);
button1.Text = i.ToString();
//Thread.Sleep(100);
});
MessageBox.Show("Thread.CurrentThread.ManagedThreadId 3:" + Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(100);
}
}
);
通过上面3处打印的线程ID,我们会知道ManagedThreadId 1 = ManagedThreadId 2 != ManagedThreadId 3。
为什么ManagedThreadId 3不一样呢?