调用'Invoke'和'BeginInvoke'但从未解决

时间:2013-04-30 10:50:37

标签: c# message-queue invoke invokerequired message-pump

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

Sync的主体永远不会被调用,因为出于某种原因,似乎我的请求永远不会从消息泵中提取出来。代码:

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 的情况相同。打印“结束调用...”但从不打印“内部正文...”。

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

1 个答案:

答案 0 :(得分:0)

解决。显然我是在Application.Run命令之外创建Windows窗体。 出于某种原因,在Application.Run命令中实例化Form已经成功了