看来,C#有时会为跨线程操作抛出异常。例如,您可以尝试在Windows窗体程序中运行此示例代码:当我允许跨线程访问和什么时候我不是?
public Form1()
{
InitializeComponent();
Thread setTextT = new Thread(TextSetter);
setTextT.Start();
}
private void TextSetter()
{
//Thread.Sleep(4000);
textBox1.Text = "Hello World";
}
它不会抛出任何异常,一切似乎都正常工作。现在,当您取消注释Thread.Sleep行时,它会为尝试的跨线程访问引发异常。
为什么会出现这种情况?
有时,它不会对你吹起来。虽然你不应该这样做。 –