InvokeRequired
和之间有什么区别somecontrol.InvokeRequired
?
像这样,
delegate void valueDelegate(string value); private void SetValue(string value) { if (InvokeRequired) { BeginInvoke(new valueDelegate(SetValue),value); } else { someControl.Text = value; } }
和
delegate void valueDelegate(string value); private void SetValue(string value) { if (someControl.InvokeRequired) { someControl.Invoke(new valueDelegate(SetValue),value); } else { someControl.Text = value; } }
Jon Skeet.. 20
第一个版本检查负责此控件的线程.第二个版本检查负责的线程someControl
.(并且他们然后将控件的线程委托给哪个控件的线程.)
它们可能有所不同 - 尽管如果两个控件位于同一个顶级窗口中,它们实际上应该不同.(一个窗口中的所有控件都应该在同一个线程上运行.)
第一个版本检查负责此控件的线程.第二个版本检查负责的线程someControl
.(并且他们然后将控件的线程委托给哪个控件的线程.)
它们可能有所不同 - 尽管如果两个控件位于同一个顶级窗口中,它们实际上应该不同.(一个窗口中的所有控件都应该在同一个线程上运行.)