请参阅MSDN上的线程安全调用教程,看看以下语句:
// InvokeRequired required compares the thread ID of the
// calling thread to the thread ID of the creating thread.
// If these threads are different, it returns true.
if (this.textBox1.InvokeRequired) {
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
} else {
this.textBox1.Text = text;
}
当然,我在我的代码中已经多次使用它,并且理解了一点为什么要使用它。但是我仍然对这些陈述有一些不清楚的问题,所以请任何人帮助我找出它们。
问题是:
- 仅使用 if 正文中的语句,代码是否可以正确运行?我试过了,如果控件没有完全初始化,它似乎只是导致问题。不知道还有没有问题?
- 通过调用程序直接调用方法(else body)实例有哪些优势?它是否节省资源(CPU,RAM)或其他东西?
谢谢!