博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Winform Timer用法,Invoke在Timer的事件中更新控件状态
阅读量:4709 次
发布时间:2019-06-10

本文共 1773 字,大约阅读时间需要 5 分钟。

System.Timers.Timer可以定时执行方法,在指定的时间间隔之后执行事件。

form窗体上放一个菜单,用于开始或者结束定时器Timer。

一个文本框,显示定时执行方法。

public partial class Form1 : Form    {        int count = 0;        System.Timers.Timer timer;        public Form1()        {            InitializeComponent();            timer = new System.Timers.Timer();            timer.Interval = 1000 * 5;            timer.Elapsed += (x, y) =>            {                count++;                InvokeMethod(string.Format("{0} count:{1}", DateTime.Now.ToString("HH:mm:ss"), count));            };        }        private void InvokeMethod(string txt)        {            Action
invokeAction = new Action
(InvokeMethod); if (this.InvokeRequired) { this.Invoke(invokeAction, txt); } else { txtLog.Text += txt + Environment.NewLine; } } private void StartMenuItem_Click(object sender, EventArgs e) { if (StartMenuItem.Text == "开始") { txtLog.Text += string.Format("{0} {1}{2}", DateTime.Now.ToString("HH:mm:ss"), "开始运行...", Environment.NewLine); timer.Start(); StartMenuItem.Text = "结束"; } else { txtLog.Text += string.Format("{0} {1}{2}", DateTime.Now.ToString("HH:mm:ss"), "结束运行...", Environment.NewLine); timer.Stop(); StartMenuItem.Text = "开始"; } } }

运行截图如下:

Timer事件中更新窗体中文本框的内容,直接使用txtLog.Text +=...方式,会报异常“线程间操作无效: 从不是创建控件“txtLog”的线程访问它。”

因此用到了Invoke方法,这个方法用于“在拥有控件的基础窗口句柄的线程上,用指定的参数列表执行指定委托”。

解释一下,就是说文本框控件是在主线程上创建的,使用Invoke方法委托主线程更改文本框的内容。

 

转载于:https://www.cnblogs.com/tanpeng/p/7073879.html

你可能感兴趣的文章
IOS-社会化分享
查看>>
json/xml processing model与xml和json的简要区别
查看>>
session学习
查看>>
新手福利:真机调试无需开发者证书
查看>>
exp8 web基础
查看>>
01-π、自然常识e、导数、导数的单调性
查看>>
(windows版)Mysql cluster 7.2集群单机多实例
查看>>
LogUtils.java
查看>>
如何在Oracle中建表空间、建用户并导入dmp文件详解
查看>>
一些未注意到的命名规范
查看>>
通过Html5 Canvas画柱状图
查看>>
青蛙跳台阶(Fibonacci数列)
查看>>
洛谷P3834 [模板]可持久化线段树1(主席树) [主席树]
查看>>
Codeforces Round #316 (Div. 2)C. Replacement(模拟)
查看>>
Python入门学习笔记17(sqlalchemyd的使用)
查看>>
.NET CORE TOKEN 权限验证
查看>>
.Net Core 中间件之主机地址过滤(HostFiltering)源码解析
查看>>
cordova百度地图定位Android版插件
查看>>
WPF最大化避免覆盖任务栏
查看>>
解决引用 System.Windows.Interactivity程序集生成多国语言文件夹fr、es、ja等问题
查看>>