这只是一个奇怪的问题。哪一个是从另一个线程更新UI的最佳方式。首先,这一个:从后台更新UI线程
private delegate void MyDelegateMethod();
void MyMethod()
{
if (unknowncontrol.InvokeRequired)
{
this.BeginInvoke(new MyDelegateMethod(MyMethod));
return;
}
unknowncontrol.property = "updating!";
}
在另一方面:
Invoke((System.Threading.ThreadStart)delegate()
{
unknowncontrol.property = "updating!";
});
或者,有没有更好的方式来做到这一点?
当然这是用于WinForms,对于WPF还有调度器。 WPF代码如何?
我在问,因为过去我在使用上述两个选项更新UI引发事件时遇到错误。这种错误类似于:“没有可用的源代码”。我认为我们所有人都看过他们:D。
谢谢,祝你有美好的一天!
你做这件事究竟是如何你应该。在未来发布实际的代码,如果你想反馈。 –
如果您的某些代码存在问题,请发布该代码。我从来没有见过“没有可用的源代码”错误。如果您的意思是当您尝试查看某种框架方法的代码时VS给出的消息,那不是错误。引发异常的实际消息是重要的一点。 – svick
从UI线程调用Control.Invoke()或Control.BeginInvoke()是否有任何性能损失?我使用第一种模式,因为如果没有必要,它不会打扰Invoke调用。 – harlam357