作者teamspike (市政府7F)
看板C_Sharp
標題[問題] 新執行緒還是會凍結主執行緒視窗?
時間Fri Sep 12 15:12:32 2008
全域變數
int i = 0;
主程式
Thread t = new Thread(new ThreadStart(DrawTest));
t.Start();
副程式
private void DrawTest()
{
while(true)
{
textBox.Text = i.toString();
textBox.Update();
}
}
以上的做法可以使textBox顯示遞增的數字
使用新Thread執行就是因為不想讓主執行緒凍結
可是使用上述的方式,只要在程式執行時拖拉移動視窗
滑鼠游標就會顯示沙漏
而且控制項就不能重繪了
請問這到底是為什麼呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.216.193
1F:→ teamspike:抱歉忘了加i++, 問題還是一樣 09/12 15:16
2F:推 horngsh:適當的地方加Application.DoEvents(); 09/12 15:59
3F:→ teamspike:抱歉,還是不懂 09/12 16:43
4F:→ teamspike:我想你說的會不會是正常顯示數字的label? 09/12 16:44
5F:→ teamspike:可是我是數字可以正常顯示,Form卻不能移動 09/12 16:45
6F:→ teamspike:懂了,加在迴圈裏麵,謝謝 09/12 17:01
7F:推 tomex:理論上這會有跨thread的錯誤,你停止warning嗎?但這危險呀 09/14 12:08