vb.net - 委托(delegate)如何解决跨线程问题?

标签 vb.net multithreading user-interface delegates function-pointers

我知道您无法从后台线程调用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/

相关文章:

c# - 我应该加密序列化文件吗?

vb.net - 从外部应用程序文本框中读取文本

vb.net - Visual Studio 2005 - 没有任何检查

java - 如何在 VB.net 表单中打开 .jar?

c++ - <函数样式转换> 错误 : Cannot convert from 'initializer list' to 'std::thread'

c# - 此代码线程在 ASP.NET MVC 4 中是否安全?

c - 在 C 中使用多线程显示质数

python - 如何在 tkinter 中使用文本框并使用值? python 3

angular - 登录重定向时遇到问题

python - 读取txt文件的内容并在Tkinter GUI Python中显示