C# 线程中使用Timer,并向其触发的事件(函数)中传递参数
来源:互联网 发布:ios网络开发教程 编辑:程序博客网 时间:2024/05/18 03:28
C#中的三个Timer我就不作说明了,这里要说的是如果你在线程中使用Timer,是不能使用System.Windows.Forms.Timer的,微软的注释很明确:“实现按用户定义的时间间隔引发事件的计时器。此计时器最宜用于 Windows 窗体应用程序中,并且必须在窗口中使用。”,在线程中使用,其相应的事件是不会触发的。
在什么地方使用什么样的Timer不是本文所要谈论的。这里仅对在使用Timer的时候的参数传递进行探讨。
■①在System.Windows.Forms.Timer 中我们如果需要在Timer所触发的事件中传递一个参数可以用一下属性Tag,也就是在启动Timer的时候给这个属性赋值,在被触发之后是可以从中取出并使用的:
如:Timer触发的事件为:void _ringTimer_Tick(object source, EventArgs e),则可将source转型为Timer,然后就可以得到启动时传递给属性Tag的参数值。
■②假若有这样一个需求:在一个线程中需要不定时启动多个Timer,每个Timer所触发的事件是相同的,但需要根据某一个参数在该事件中执行不同的操作(反正就是需要一个参数传递到Timer所触发的事件中),但System.Timers.Timer 所有属性中并不包含可用于传递参数的属性,因而要想在启动Timer的时候注入一个参数,以便在Timer触发的函数中使用,就不那么方便了。
System.Windows.Forms.Timer中具有Tag属性,System.Timers.Timer 如果也有一个Tag或更多的最好是自定义的属性岂不更好,是的,我们可以根据需要自定一个Timer即可:
贴一个调试图片:
下面是全部代码:
来源:万达源科技
- C# 线程中使用Timer,并向其触发的事件(函数)中传递参数
- C# 线程中使用Timer,并向其触发的事件(函数)中传递参数
- 在System.timers.timer中给定时器触发的Elapsed事件传递参数
- 在System.timers.timer中给定时器触发的Elapsed事件传递参数
- 在System.timers.timer中给定时器触发的Elapsed事件传递参数
- C#中向线程传递参数的方法
- 在System.Timers.Timer的事件中传递参数
- C#中System.Timers.Timer定时器的elapsed函数传递参数
- C#中Timer的触发问题
- C#中使用OpenGL:(六)C#中调用C函数时的参数传递问题
- 点击 VB 中 DataGrid 行 触发事件 弹出窗口 并传递 所点击行参数
- java向线程中传递参数
- java向线程中传递参数的方法
- java向线程中传递参数的方法
- 使用C#的Timer控件来实现定时触发事件
- 在C#中使用代理的方式触发事件
- 在C#中使用代理的方式触发事件
- 在C#中使用代理的方式触发事件
- iphone游戏开发-Collisions and Collectables: How To Make a Tile Based Game with Cocos2D Part 2
- exe程序运行出错退出,使用windbg查找出错位置
- 关于unordered_map
- bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory
- 人们最初厌恶编程的10个原因
- C# 线程中使用Timer,并向其触发的事件(函数)中传递参数
- .NET组件程序设计 第6章 事件
- cfml插入DB记录
- “越狱”型团队最理想,“寻宝”型团队最糟糕
- php语法学习一例
- libsvm
- 天真
- 安装项目在执行后执行一个第三方程序
- Q:请问WinDriver生成的驱动程序是否会包含源代码?