& # 39;调用# 39;和& # 39;BeginInvoke& # 39;被调用但从未被解决

本文关键字:调用 解决 BeginInvoke | 更新日期: 2023-09-27 18:11:34

我正在处理一个软件的GUI线程。我必须在GridView中显示需要不断从底层api轮询的数据。我创建了一个名为Sync()的方法来更新数据,我试图通过使用BeginInvoke和/或Invoke来使其线程安全。Sync方法由计时器每隔5秒左右调用一次。

Sync的主体从未被调用,因为出于某种原因,我的请求似乎从未从消息泵中拉出。代码:

 public void Sync()
    {
        if (this.InvokeRequired)
        {
            logger.Debug("Begin Invoke of Sync operation");
            this.Invoke(new SyncDelegate(Sync));
            logger.Debug("End Invoke of Sync operation");
        }
        else
        {
            logger.Debug("Inside body");
        }
    }

日志如下:

10:00:00 Begin Invoke of Sync operation
... other stuff ...
10:00:05 Begin Invoke of Sync operation
... other stuff ...
10:00:10 Begin Invoke of Sync operation

其他消息不打印。

BeginInvoke也一样。"结束调用……"是打印出来的,但是"inside body…"从来没有打印出来。

我在Unity3D和MonoDevelop上运行(如果这改变了什么)。

& # 39;调用# 39;和& # 39;BeginInvoke& # 39;被调用但从未被解决

解决。显然,我是在应用程序之外创建Windows窗体。运行命令。由于某种原因,在应用程序内部实例化表单。运行命令就可以了

相关文章: