2013-08-27 46 views
-1

我想從端口附件hardware.I成功從端口獲取值,但是當我試圖填充此值時,它給予以下錯誤錯誤 - 調用線程不能訪問這個對象,因爲不同的線程擁有它

「因爲不同的線程擁有它調用線程不能訪問該對象」

這裏是我的代碼

private void port_DataReceived(object sender, SerialDataReceivedEventArgs e) 
{ 
    try 
    { 
     string strAck = port.ReadExisting(); 

     if (!string.IsNullOrWhiteSpace(strAck)) 
     { 
      txtvalue = strAck;    
     } 
    }    
    catch(Exception ex) 
    {  
    } 
} 
+2

請參閱右側的相關部分。這之前已經回答了很多次。 – LPL

+1

也有點Google走了很長的路。通常情況下,我會將異常文本直接複製到我的搜索引擎,並且只問我是否無法以這種方式解決問題。 – Gusdor

+0

如果您使用的是.NET 4.5,請嘗試新的await和異步api,這會使此問題變得更加容易。 http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx – sprocket12

回答

0

你真的應該已經搜查FO在發佈此問題之前,請回答您的問題,因爲此前已多次回答。簡短的答案是你必須在UI線程上設置值。你會這樣做:

this.Dispatcher.Invoke((Action)(() => 
{ 
    string strAck = port.ReadExisting(); 
    if (!string.IsNullOrWhiteSpace(strAck)) 
    { 
     txtvalue = strAck;    
    } 
})); 
相關問題