c# - 在 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;
}
解决方案
您可以使用调用。
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;
}));
}
推荐阅读
- c++ - 如何在 C++Builder 中使用 txt 文件?
- android - 在 Google Paging Library 3 中没有任何滚动的情况下,Api 调用不会一次又一次地停止调用
- python - 创建类的实例 - 熊猫数据框 - SyntaxError:无效语法
- python - 添加遇到较小数字时不会重置的排名/顺序列
- c++ - 为什么 bind_back 没有添加到 C++20 中?
- amazon-web-services - AWS DynamoDB Local 使用 awscli 添加全局二级索引
- azure-devops - 从 Azure DevOps 管道运行架构比较以更新 SQL 数据库项目
- python - 预训练的 spacy 模型或 spacy.blank,对于自定义 NER,哪个是正确的方法?
- arrays - 解析嵌套数组以快速填充 uitableview
- ubuntu - 在 Raspberry Pi 4 上运行的 Ubuntu 20.04 上安装 Node Red OPC UA 服务器失败