我想在richtextBox中看到它們之後,我從串口讀取數據。但是我得到了那個錯誤。請幫忙。 跨線程操作無效:從其創建線程以外的線程訪問控件'richTextBox1'。在c#
-2
A
回答
0
您不能從除主線程以外的任何線程中更改UI組件。
嘗試以下操作:
richTextBox1.Invoke(new Action(() => { richTextBox1.Text = val.ToString(); }));
調用導致要在UI線程中運行指定的動作。
0
正如異常告訴你的,你試圖訪問另一個線程上的UI元素,而不是它的創建。但是,您必須知道UI元素只能由您創建它們的線程訪問。你可能在主線程上創建了這個UI元素(這意味着你在正常情況下創建它,而不是在異步上下文中),但試圖在另一個線程(可能在異步上下文中)訪問它。無論如何要訪問它,您必須調用您想要對您創建的線程上的元素執行的任何操作。但是你不必知道你創建了哪個線程,因爲UI元素本身就知道它。要調用它在它的線程使用Invoke
:
var val1 = (string)val.Clone();
if(richTextBox1.InvokeRequired)
richTextBox1.Invoke(new Action(() => richTextBox1.Text = val1));
else
richTextBox1.Text = val1;
你可以看到,我值複製到另一個變量,它可以是有用的變量val
可同時分配值,以RTB的文本改變。此外,我檢查了其實際需要的調用,因爲如果它已經在正確的線程上,則不必調用它。
相關問題
- 1. 跨線程操作無效:從其創建的線程以外的線程訪問控制'Form2'
- 2. 跨線程操作無效:從其創建的線程以外的線程訪問控制'chart1'
- 3. 跨線程操作無效:從其創建線程以外的其他線程訪問
- 4. VB.NET [跨線程操作無效:控制'txtIncomingText'從線程訪問........]
- 5. c# - 進度條[線程]跨線程操作無效:從其創建的線程以外的線程訪問控制'progressBar'
- 6. 從C#中創建的線程以外的其他線程訪問控制器
- 7. 如何解決這個問題==跨線程操作無效:控制'frm_proc'從其創建的線程以外的線程訪問
- 8. 跨線程操作無效
- 9. 跨線程操作無效:
- 10. 跨線程操作無效
- 11. 跨線程操作無效
- 12. 跨線程操作無效
- 13. 跨線程操作無效
- 14. vb.net線程進度條 - 線程操作無效:從其創建的線程以外的線程訪問的控制'ProgressBar1'
- 15. c#顯示線程無效的跨線程訪問問題
- 16. c# - 跨線程操作無效ListView
- 17. 線程安全問題:跨線程操作無效
- 18. 如何糾正「從其創建線程以外的線程訪問」的錯誤?
- 19. 無效的跨線程訪問問題
- 20. 瞭解跨線程控件訪問C#
- 21. 「跨線程操作無效」的行爲
- 22. 跨線程操作控制
- 23. WP7 BarcodeManager - 無效的跨線程訪問
- 24. BackgroundWOrker無效的跨線程訪問
- 25. SerialPorts和多線程 - 跨線程操作無效
- 26. VB.NET跨線程操作無效
- 27. BackgroundWorker - 跨線程操作無效
- 28. .NET BackGroundWorker - InvalidOperationException:跨線程操作無效
- 29. 獲取跨線程操作SetWindowPos()無效
- 30. VB.net跨線程操作無效
我得到了和圖表相同的錯誤:( – rhsn
@rhsn然後你必須對圖表做相同的處理(你必須調用它),否則,考慮爲圖表提供代碼 – MetaColon
@rhsn如果你有同樣的錯誤,那麼它應該是相當明顯的是什麼是需要修復它。 –