我知道您无法从后台线程
调用GUI更新函数,但我不知道如何创建委托(delegate)
,将GUI更新函数分配给它,然后调用它解决了这个问题。这与调用 GUI 更新函数本身有何不同?创建函数指针
(委托(delegate)
)如何解决这个问题?
最佳答案
委托(delegate)不能解决这个问题,Control.BeginInvoke() 或 Dispatcher.BeginInvoke() 方法可以解决这个问题。只有他们知道如何在特定的其他线程上正确运行代码,这是 UI 线程使用的消息循环(也称为调度程序循环)提供的功能。这样的循环是 producer-consumer problem 的常见解决方案.
这些方法需要一个委托(delegate)对象,作为参数传递。这样他们就知道需要在 UI 线程上运行哪些特定代码。
关于vb.net - 委托(delegate)如何解决跨线程问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17820430/