首页 > 解决方案 > 在 ElapsedEventHandler 中获取日期和时间

问题描述

因此每 5 秒执行一次 myTimer2 函数。我正在尝试显示函数执行的日期和时间。不幸的是,我收到 System.InvalidOperationException 错误

“跨线程操作无效:控件'textBox1'从创建它的线程以外的线程访问”

    public UpdateForm2()
    {
        InitializeComponent();

        Timer x = new Timer(5000);
        x.AutoReset = true;
        x.Elapsed += new System.Timers.ElapsedEventHandler(myTimer2);
        x.Start();
    }

    public void myTimer2(object sender, System.Timers.ElapsedEventArgs e)
    {
        // Getting error on this line.
        textBox1.Text = "The textbox has been updated on " + DateTime.Now.ToString("HH:mm:ss tt") + Environment.NewLine;
    }

标签: c#

解决方案


您可以使用调用。

public UpdateForm2()
{
    InitializeComponent();

    Timer x = new Timer(5000);
    x.AutoReset = true;
    x.Elapsed += new System.Timers.ElapsedEventHandler(myTimer2);
    x.Start();
}

public void myTimer2(object sender, System.Timers.ElapsedEventArgs e)
{
    
     this.Invoke(new MethodInvoker(delegate {
            textBox1.Text = "The textbox has been updated on " + DateTime.Now.ToString("HH:mm:ss tt") + Environment.NewLine;
        }));
        
  
}

推荐阅读