现在的位置: 首页 > 综合 > 正文

System.Timers.Timer在Windows Services程序中工作不正常的问题解决

2011年05月15日 ⁄ 综合 ⁄ 共 1195字 ⁄ 字号 评论关闭

问题:

在windows service程序中,定时器在运行一段时间后不工作

分析:

在查阅了大量的资料后,我们发现导致这个错误的原因是因为.NET FrameworkSystem.Timers.Timerbug导致的。以下是该BUG的简单信息:

BUG: The Elapsed event of the System.Timers.Timer class is not raised in a Windows service

Article ID

:

KB 842793

Last Review

:

July 27, 2004

Revision

:

1.0

SYMPTOMS

You can use the Microsoft .NET Framework to create a new Microsoft Windows service that contains a System.Timers.Timer object. When you run this new Windows service, the Elapsed event of the System.Timers.Timer class may not be raised.

CAUSE

Note In this section, the System.Timers.Timer object is referred to as the Timer object.

In the event handler for the Elapsed event of the Timer object, if you call the Stop method of the Timer object, the reference to the Timer object is lost. The garbage collector then reclaims the memory that is associated with the Timer object. Later, even if you call the Start method of the Timer object to raise the Elapsed event, the call does not work. The Elapsed event is not raised.

WORKAROUND

To work around this problem, use a System.Threading.Timer object instead of the System.Timers.Timer object.

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed in the "Applies to" section.

 

详见以下链接内容,http://support.microsoft.com/default.aspx?scid=kb;EN-US;842793

解决方案:

按照KB 842793的建议,用System.Threading.Timer替换System.Timers.Timer

【上篇】
【下篇】

抱歉!评论已关闭.