请问一下以下两种写法为何第一种在运行时视窗不能拖动,第二种视窗可以拖动。
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,没有父子的阶层关系?