当我尝试在自定义类中停止Timer时,我不断收到NullReferenceException

时间:2012-09-13 22:25:11

标签: c# .net nullreferenceexception

我有一个使用表单设计器创建的计时器(它使它成为主表单窗口的成员吗?)我在这个类中以不同的方法停止计时器。目前我通过将其传递到另一个方法并将其分配给此类的私有成员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;
    }

1 个答案:

答案 0 :(得分:0)

请注意,您的代码位于事件中。事件可能会在主窗体运行的单独线程中调用。有关如何解决此问题,请参阅How to: Make Thread-Safe Calls to Windows Forms Controls

此外,从事件中删除事件并不是一种好习惯。