我正在处理一个软件的 GUI 线程。我必须在需要从底层 API 不断轮询的 GridView 数据中显示。我创建了一个名为更新数据的方法,并尝试使用and/orSync()
使其线程安全。该方法每五秒左右由一个计时器调用一次。BeginInvoke
Invoke
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
永远不会打印其他消息。
对于BeginInvoke
. “End Invoke ...”被打印,但“inside body ...”从不打印。
我在 Unity3D 和 MonoDevelop 之上运行(如果这改变了任何东西)。