請問一下以下兩種寫法為何第一種在運行時視窗不能拖動,第二種視窗可以拖動。
private void button2_Click(object sender, EventArgs e)
{
new Thread(Test).Start();
}
1.視窗會被卡死
public void Test()
{
if (textBox1.InvokeRequired)
{
Action obj = new Action(Test);
textBox1.Invoke(obj);
return;
}
for (int x = 0; x < 100000; x++)
{
textBox1.Text = x.ToString();
}
}
2.視窗不會被卡死
public void Test()
{
for (int x = 0; x < 100000; x++)
{
textBox1.Invoke(new Action(() => {textBox1.Text = x.ToString();}));
}
}
另外還有幾個觀念想請問一下,C#的Message loop會不會因為父Thread忙碌造成子Thread
也卡住? 還是每一個Thread都有自己的message loop,沒有父子的階層關係?