2

我知道您不能从 a 调用 GUI 更新函数background thread,但我看不出如何创建 a delegate,将 GUI 更新函数分配给它,然后调用它来解决这个问题。这与调用 GUI 更新函数本身有何不同?创建function pointer( delegate) 如何解决这个问题?

4

1 回答 1

4

委托解决这个问题,Control.BeginInvoke() 或 Dispatcher.BeginInvoke() 方法可以。只有他们知道如何在特定的其他线程上正确运行代码,这是 UI 线程使用的消息循环(也称为调度程序循环)提供的功能。这样的循环是生产者-消费者问题的常见解决方案。

这些方法需要一个委托对象,作为参数传递。以便他们知道需要在 UI 线程上运行哪些特定代码。

于 2013-07-23T22:08:30.563 回答