.net2005中添加System.Timers.Timer控件
来源:互联网 发布:淘宝店铺推荐男装 编辑:程序博客网 时间:2024/06/05 02:59
VS.Net 2005默认只有一个Timer控件,但那是System.Forms.Timer控件.如果要使用System.Timers.Timer的控件,需要在工具箱上单击右键,手动添加.
添加的步骤:
工具箱单击右键->Add Item->找到命名空间是System.Timers.Timer的控件,将其选中,OK即可.
再简单的介绍一下这两种Timer的区别。
(引用自:
http://www.cnblogs.com/starspace/archive/2008/11/05/1326765.html)
System.Windows.Forms.Timer是使用得比较多的Timer,Timer Start之后定时(按设定的Interval)调用挂接在Tick事件上的EvnetHandler。在这种Timer的EventHandler中可以直接获取和修改UI元素而不会出现问题--因为这种Timer实际上就是在UI线程自身上进行调用的。也正是因为这个原因,导致了在Timer的EventHandler里面进行长时间的阻塞调用,将会阻塞界面响应的后果。下面是一个简单的例子:
public class MainForm : Form
{
private void MainForm_Load(object sender, EventArgs e)
{
timer.Interval = 1000;
timer.Tick += delegate(object o, EventArgs args)
{
DoWork();
};
timer.Start();
}
private void DoWork()
{
for (int i = 0; i < 10; i++)
{
System.Threading.Thread.Sleep(1000);
}
}
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
}
在这个例子中,DoWork方法里面将会阻塞10秒,在这10秒之内,UI将会失去响应。而通过使用System.Timers.Timer,就可以解决这个问题。因为System.Timers.Timer是在.NET的Thread Pool上面运行的,而不是直接在UI Thread上面运行,所以在这种Timer的EventHandler里面进行耗时较长的计算不会导致UI失去响应。但是这里有两个地方需要注意:
因为一般来说System.Timers.Timer不是运行在UI Thread上面的,所以如果要在这种Timer的EventHandler里面更新UI元素的话,需要进行一次线程切换,在WinForm开发中一般通过UI元素的Invoke方法完成:
private void DoWork()
{
for (int i = 0; i < 10; i++)
{
System.Threading.Thread.Sleep(1000);
}
this.Invoke(new UpdateUICallBack(UpdateUI));
}
private delegate void UpdateUICallBack();
private void UpdateUI()
{
}
System.Timers.Timer有一个Property:SynchronizingObject 。如果设置了这个Property(一般是某个Form),那么之后对Timer挂接的EventHandler的调用将会在创建这个UI元素的线程上进行(一般来说就是UI线程)。值得注意的是,如果你通过WinForm设计器把System.Timers.Timer拖放到Form上,那么这个Property将会自动被设置。此时这种Timer就和System.Windows.Forms.Timer的效果一样:长调用将会阻塞界面。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiaocuner/archive/2009/01/16/3793557.aspx
- .net2005中添加System.Timers.Timer控件
- .net2005中添加System.Timers.Timer控件
- Timer控件使用(System.Timers.Timer)
- Timer控件使用(System.Timers.Timer)
- 在C#中使用System.Timers.Timer
- 在C#中使用System.Timers.Timer
- 在C#中使用System.Timers.Timer
- C#中System.Timers.Timer的使用
- System.Timers.Timer
- System.Timers.Timer用法
- 关于System.Timers.Timer
- System.Timers.Timer
- SYstem.Timers.Timer用法
- System.Timers.Timer重置
- 在System.Timers.Timer的事件中传递参数
- System.Timers.Timer 定时执行
- System.Timers.Timer 定时执行
- System.Timers.Timer的使用
- 现代战争——僵尸网络的历史(上篇)
- linux编程的108种奇淫巧计-7(Lock-free实验)【答网友问】
- 瑞星木马防御专杀QQ,360,百度软件管家(见图为证!)
- Delphi WinExec ShellExec 用法介绍(转)
- 准备学习CUDA
- .net2005中添加System.Timers.Timer控件
- java cookie 实现用户账号信息本地保存
- Flex开发中实现程序多语言的两篇文章
- 数独-- 一个高效率生成数独的算法
- windows下将解压缩版的tomcat设置为系统服务
- AS3中的位运算操作提速
- 嵌入式Linux实时化技术
- LUCENE查询语法
- C# “Singleton” 模式四种实现方法