2013-04-30 73 views
0

我正在照顧一塊軟件的GUI線程。Invoke和BeginInvoke被調用,但從未解決

我必須在gridview內部顯示需要持續從底層API調用的數據。

我創建了一個名爲Sync()的方法來更新數據,並且我試圖通過使用BeginInvoke和/或Invoke來使其線程安全。 Sync方法每5秒左右由一個定時器調用。

同步的主體永遠不會被調用,因爲某些原因,似乎我的請求永遠不會從消息泵中拉出。

下面是代碼:

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 ...」已打印,但「內部正文...」從不打印。

我在unity3d和mono之上運行。 (如果這個改變任何東西)

感謝大家誰給的幫助:)

回答

0

解決。顯然,我在Application.Run命令之外創建了Windows窗體。 出於某種原因實例化Application.Run命令中的窗體的竅門

相關問題