【问题标题】:Timer error after couple minutes running C#运行 C# 几分钟后出现计时器错误
【发布时间】:2020-05-17 18:00:04
【问题描述】:

我是 c# 的新手,我只是为了个人学习而编程,我一直在尝试编写一条指令,从远程站读取一些数据到我的应用程序 (m64...mw74),它是运行几分钟,但它可能在 5 分钟后崩溃。 请参阅下面我使用的代码,以每 1 秒更新一次数据并将其写入表单中的简单文本框中。enter image description here

非常感谢您。

private void Load_act()
    {
      actvalueL1.Text = plc.Read("mw64").ToString();
      actvaluep1.Text = plc.Read("mw68").ToString();
      actvaluep2.Text = plc.Read("mw71").ToString();
      actvaluep3.Text = plc.Read("mw74").ToString();

      InitTimer();
    }

    private Timer timer1;
    public void InitTimer()
    {
        timer1 = new Timer();
        timer1.Tick += new EventHandler(timer1_Tick);
        timer1.Interval = 1000; // in miliseconds
        timer1.Start();
        //Console.ReadLine();
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        Load_act();
    }

【问题讨论】:

  • 你正在使用什么计时器类(即,什么命名空间/dll)?此外,您正在回调本身中添加对 timer1.Tick 的回调,因此该列表将随着每个滴答事件呈指数增长。

标签: c# loops time crash fault


【解决方案1】:

您正在链接计时器,最终会因为它们无法处理而耗尽内存 - 计时器通过自己的调用创建下一个。将它们返回到循环您的计时器“initTimer”的父方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    • 2013-09-13
    相关资源
    最近更新 更多