2011-09-14 52 views
0

我有一個不同於UI線程的線程調用的方法。在窗體上調用Invoke()時出現代碼問題?

當這種方法被稱爲控制消失了,我的意思是什麼都沒有發生。

的代碼如下圖所示:

private void MainForm_NewMeasurementState(Measurement measurement) 
      { 
       try 
       { 
        if (InvokeRequired) 
        { 
         // we were called on a worker thread 
         // marshall the call to the user interface thread 
         this.Invoke(new Action<Measurement>(MainForm_NewMeasurementState), new object[] { measurement }); 
         return; 
        } 
// some other code 
    } 

控制來在if語句,但當時我不知道發生了什麼,其他的代碼不會被調用。

任何幫助將不勝感激。

+0

這是WPF還是WinForms? – Tejs

+0

使用.Net精簡框架的WinForms .. –

+0

「其他代碼永遠不會被調用」 - 您如何知道*其他代碼未被調用?你有沒有嘗試在那裏放置一個斷點,看看它是否被擊中? –

回答

1

這可能是因爲您的主線程被阻塞,可能是因爲它正在等待您的代碼完成(即您的代碼因兩個線程正在等待彼此而死鎖)。

試着找出爲什麼主UI線程被阻塞,否則使用BeginInvoke而不是Invoke

相關問題