我正在处理以下处理线程和线程优先级的程序。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