我有一个需要定期做某些事情的Windows服务.我应该使用可等待的计时器对象还是计时器队列?
这两种方法的优点和缺点是什么?这是一个错误的二分法吗?还有第三种方式吗?
一个等待计时器旨在通过APC激活代码.由于重新进入问题,这很难做到正确,只有当你需要在一个被占用的线程上运行代码但是通常足以允许APC运行的线程时才应该考虑这个问题.
定时器队列是非常轻量级的对象,它们的回调运行在来自线程池的(廉价)线程上.几乎总是有利于定期服务.
第三种方法是在服务启动时启动一个线程,并使用WaitForSingleObject()阻塞,其超时设置周期.你会等待一个表明服务应该停止的事件.非常容易上手,不像计时器队列那样精简.
| 归档时间: |
|
| 查看次数: |
1355 次 |
| 最近记录: |