0

我正在处理一个软件的 GUI 线程。我必须在需要从底层 API 不断轮询的 GridView 数据中显示。我创建了一个名为更新数据的方法,并尝试使用and/orSync()使其线程安全。该方法每五秒左右由一个计时器调用一次。BeginInvokeInvokeSync

的主体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. “End Invoke ...”被打印,但“inside body ...”从不打印。

我在 Unity3D 和 MonoDevelop 之上运行(如果这改变了任何东西)。

4

1 回答 1

0

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

于 2013-05-07T12:34:04.317 回答