我正在處理以下處理線程和線程優先級的程序。C#空引用異常
我已經構建了一個窗體窗體,其中包含一個富文本框(DisplayTextBox)和兩個按鈕(用於運行應用程序的StartButton和用於關閉應用程序的ExitButton)。
在窗體中,我創建了幾個線程並且一個接一個地運行它們。每個線程使用的方法都可以在Threading類中找到。有問題的方法是PrintOnScreen()。
在此方法中,我將線程名稱以及其優先級附加到StringBuilder類型的字符串。然後我想在DisplayTextBox(它在Form.cs中)中顯示str的內容。
但是,我得到一個「NullReferenceException未處理:對象引用未設置爲對象的實例」錯誤。錯誤總結如下:
DisplayTextBox.Text = Convert.ToString(str);
你能幫我解決這個錯誤嗎?謝謝。
編輯
感謝所有您的幫助。爲了解決這個問題,我將PrintOnScreen方法複製到Form.cs類並放棄了Threading.cs。
我後來使用了Anand給出的代碼並將它放在t2.Join()之下。現在它像一個魅力。
你知道哪個對象爲null嗎?這個問題只有兩個可能的答案,第一個會是** DisplayTextBox **第二個會是** str **當然,我沒有看到您在表單上傳遞對DisplayTextBox的引用。線程繼承Form1並不意味着它具有對Form1上控件的引用。 – 2011-12-27 12:21:24
即使您確實修復了代碼並將引用傳遞給了** DisplayTextBox **,也必須調用更改文本,因爲您無法修改除主UI線程之外的單獨線程中的控件。 – 2011-12-27 12:23:50
您應該真的考慮同步對從多個線程訪問的數據的訪問。例如,你是用兩個線程寫入同一個StringBuilder實例並迭代Threads-collection。 – Jan 2011-12-27 12:26:51