2010-08-09 78 views
0

Possible Duplicate:
Cross-thread operation not valid: Control accessed from a thread other than the thread it was created on.跨線程運行在C#中無效

問候, 我試圖從一個線程更新按鈕的狀態,我得到這個錯誤:

「跨線程操作無效:控制'btn1'從其創建線程以外的線程訪問。「

請指教如何解決這個問題。

這裏是我的代碼:

if (strMyPlayer == "Player One") 
{ 
     if (srReceiver.ReadLine() == "Player One says: btn1") 
     { 
      btn1.Text = "O"; 
      btn1.Enabled = false; 
     } 
} 
else 
{ 
     if (srReceiver.ReadLine() == "btn1") 
     { 
      btn1.Text = "X"; 
      btn1.Enabled = false; 
     }  
} 
+0

是的,重複的。 – Manfred 2010-08-09 10:23:33

+2

至少有** 20 **相同​​的問題,也是第一個導致谷歌查詢會給你的解決方案。我真的很想聽聽你爲什麼不嘗試尋找解決方案。 – Andrey 2010-08-09 10:23:54

回答

1

您無法從後臺線程更新UI元素。我猜srReceiver在後臺線程上運行。

您可以使用委託更新:

btn1.Invoke(delegate { 
          btn1.Enabled = "OK"; 
          btn1.Text = "X"; 
         });