& # 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上运行(如果这改变了什么)。
解决。显然,我是在应用程序之外创建Windows窗体。运行命令。由于某种原因,在应用程序内部实例化表单。运行命令就可以了