代码之家  ›  专栏  ›  技术社区  ›  Lumpy

当计时器事件执行时,声明mainForm被释放的异常

  •  0
  • Lumpy  · 技术社区  · 16 年前

    我有一个win表单,它使用System.Timers.Timer。当计时器执行时,它更新mainForm上的一个变量。我得到一个例外告诉我,主窗体已被处置。我做错了什么。如果我更新变量,程序运行正常。如果我尝试读取变量并将其发布到消息框中,则一切正常。只有当我尝试从计时器事件处理程序中更改变量的值时,才会得到异常。怎么回事?

    //works
    private void OnTimedEvent(object source, ElapsedEventArgs e)
        {
           MessageBox.Show(myVarFromMainForm);
        }
    //does not work
    private void OnTimedEvent(object source, ElapsedEventArgs e)
        {
            myVariableFromMainForm = 10;
        }
    
    1 回复  |  直到 16 年前
        1
  •  0
  •   Hans Passant    16 年前

    这是不太可能的代码作为张贴炸弹上。但是,当您使用System.Timers.Timer时,获取异常并不奇怪。你呢 有 确保在窗体关闭之前关闭计时器。如果不这样做,则允许在窗体对象不活动时运行已用事件。

    推荐文章