服务器计时器

服务器计时器使用注意事项总结:

1:**/

2:**/

 

 

一、多线程调用。

服务器计数器是基于多线程的。基于ThreadPool支持。

Elapsed 事件在 ThreadPool 线程上引发。如果 Elapsed 事件的处理时间比 Interval 长,在另一个 ThreadPool 线程上将会再次引发此事件。因此,事件处理程序应当是可重入的。

 

如果 Timer 应在每次间隔结束时引发 Elapsed 事件,则为 true;默认为 true;

 

 

 

 

结果如下:

 

线程 0x6ac 已退出,返回值为 0 (0x0)。
线程 0x6e0 已退出,返回值为 0 (0x0)。
:::::::::::::::::::::::::::::::True
ManagedThreadId:   7
0
:::::::::::::::::::::::::::::::True
ManagedThreadId:   7
1
ManagedThreadId:   12
0
ManagedThreadId:   7
2
:::::::::::::::::::::::::::::::True
ManagedThreadId:   12
1
ManagedThreadId:   7
0
ManagedThreadId:   12
2
:::::::::::::::::::::::::::::::True
ManagedThreadId:   7
1
ManagedThreadId:   12
0
ManagedThreadId:   7
2
:::::::::::::::::::::::::::::::True
ManagedThreadId:   12
1
ManagedThreadId:   7
0
ManagedThreadId:   12
2

 

 

 

 

二、服务器计时器可以在线程之间移动来处理引发的事件

 

SynchronizingObjectnullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing 时,将从系统线程池中的某个线程上调用处理 Elapsed 事件的方法。有关系统线程池的更多信息,请参见 ThreadPool。

Elapsed 事件由可视化 Windows 窗体组件(如按钮)处理时,通过系统线程池访问组件可能导致异常,或者可能不管用。为避免这种情况,可将 SynchronizingObject 设置为 Windows 窗体组件,该组件将导致在创建它的同一线程上调用处理 Elapsed 事件的方法。

如果在 Windows 窗体设计器的 Visual Studio 中使用 Timer,则 SynchronizingObject 自动设置为包含 Timer 的控件。例如,如果将 Timer 放在 Form1(它从 Form 继承)的设计器上,则 TimerSynchronizingObject 属性设置为 Form1 的实例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值