我有一个使用表单设计器创建的计时器(它使它成为主表单窗口的成员吗?)我在这个类中以不同的方法停止计时器。目前我通过将其传递到另一个方法并将其分配给此类的私有成员t
来实现它。我意识到当发生这种情况时它可能会为空,但它不是在我调试它并且它让我疯狂的时候。
System.NullReferenceException was unhandled by user code
Message=Object reference not set to an instance of an object.
private void domDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
// do a doc scan here then remove the handler
var form = Form.ActiveForm as MainWindow;
form.pagesToVisit = docScan(b.Document, this.domain);
if (t != null) { t.Start(); }
// here i need to stop a timer that is a member of the main form
b.DocumentCompleted -= domDocumentCompleted;
}
答案 0 :(得分:0)
请注意,您的代码位于事件中。事件可能会在主窗体运行的单独线程中调用。有关如何解决此问题,请参阅How to: Make Thread-Safe Calls to Windows Forms Controls 。
此外,从事件中删除事件并不是一种好习惯。