我对线程中的 GUI 问题感到恼火。我如何创建一个 FIFO,以便我的主窗体/线程将接收数据来做事,而不是让我的线程使用回调并自己运行代码(并失败)?
有问题的gui问题-> SelectedNode = .Nodes [0]上的线程异常
我对线程中的 GUI 问题感到恼火。我如何创建一个 FIFO,以便我的主窗体/线程将接收数据来做事,而不是让我的线程使用回调并自己运行代码(并失败)?
有问题的gui问题-> SelectedNode = .Nodes [0]上的线程异常
使用SynchronizationContextPost
/ Send
“调用”到 UI 线程。
Winform 控件上的 BeginInvoke,要跨线程进行调用,将使用 Window 的消息队列,即 FIFO。
如果您有主窗体(或任何控件)的句柄,则可以使用Control.Invoke
/ Control.BeginInvoke
。
如果您不想分发Control
实例,则可以为外部代码提供一个ISynchronizeInvoke
实例(任何控件都会这样做,或者编写自己的类来包装aControl
以防止调用者强制转换)。然后调用者可以使用它来执行方法。
最后,考虑使用事件;正在运行的代码引发您的 UI 处理的事件;然后 UI 可以Control.Invoke
在本地调用以处理数据。