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

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

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

public partial class Form1 : Form
{
int count = ;
System.Timers.Timer timer;
public Form1()
{
InitializeComponent(); timer = new System.Timers.Timer();
timer.Interval = * ;
timer.Elapsed += (x, y) =>
{
count++; InvokeMethod(string.Format("{0} count:{1}", DateTime.Now.ToString("HH:mm:ss"), count));
};
} private void InvokeMethod(string txt)
{
Action<string> invokeAction = new Action<string>(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方法委托主线程更改文本框的内容。

最新文章

  1. Fluent Nhibernate之旅(五)--利用AutoMapping进行简单开发
  2. zw.delphi不同版本程序运行速度测试
  3. ASP.NET访问Excel 失败的解决方法(错误号:80070005,8000401a)
  4. Java [Leetcode 278]First Bad Version
  5. HW5.26
  6. 360极速浏览器在XP系统下的一个bug
  7. 14.3 InnoDB Multi-Versioning InnoDB 多版本
  8. SET STATISTICS IO和SET STATISTICS TIME 在SQL Server查询性能优化中的作用
  9. MVC之文件上传1
  10. c语言清屏、等待、随机函数
  11. Python之文件和目录操作
  12. JMeter命令模式下动态设置线程组和持续时间等动态传参
  13. 如何创建 SVN 服务器,并搭建自己的 SVN 仓库 如何将代码工程添加到VisualSVN Server里面管理
  14. 数据库语句收藏(MySQL)
  15. 第5章 Linux上管理文件系统
  16. 小R的树(权限题)
  17. CentOS 7.0关闭服务器的防火墙服务命令
  18. (转).net面试题(老赵)
  19. [转]十个 iOS 面试问题
  20. JavaScript Debug 之 Console

热门文章

  1. C# 创建压缩文件
  2. 设置共享目录(主机win7,虚拟机Ubuntu)
  3. The authenticity of host &#39;172.16.33.53 (172.16.33.53)&#39; can&#39;t be established的问题(日志六)
  4. [刷题]算法竞赛入门经典(第2版) 5-5/UVa10391 - Compound Words
  5. 使用Browserify来实现CommonJS的浏览器加载
  6. Haproxy------在windows下配置负载均衡
  7. Java中线程的实现:
  8. 阿里的dubbo 到底是用来干嘛的?
  9. 基于腾讯云的Centos6.2系统搭建Apache+Mysql+PHP开发环境
  10. Interactive pivot tables with R(转)