使用Timer自托管WCF服务

时间:2013-03-18 21:12:56

标签: c# .net wcf

我正在关注this示例来创建自托管WCF服务。理想情况下,如果某个值在数据库中更新,我希望服务与计时器连接以检查每半小时,如果是服务将执行某些任务,否则将每半小时检查一次。我在网上看到,在IIS托管的WCF中使用计时器不是一个好主意,如何在自托管的wcf服务上使用它?任何例子?

谢谢,

2 个答案:

答案 0 :(得分:3)

我认为更好的选择是创建一个简单的控制台应用程序,在值更新后执行您的任务,然后在Windows中创建一个每半小时运行一次此控制台应用程序的计划任务。这样您就可以让Windows管理计时部分,您只需编写检查数据库的代码并在必要时进行更新。

不确定您正在运行的Windows版本,但是您可以从控制面板访问计划任务。

Create a Scheduled Task on XP

Create a Scheduled Task on Windows 7

答案 1 :(得分:0)

IIS托管WCF服务中的计时器“不是一个好主意”的原因是IIS服务的生命周期与自托管服务的不同。有关详细信息,请参阅此SO question and answerMSDN article for even more details

基本上,如果在超时期限内没有人连接到WCF服务,则可以在IIS内部托管WCF服务。如果您需要定期维护,就像您所描述的那样,您将需要使用自托管服务并让该服务启动一个计时器,该计时器会在OnStart()呼叫中每半小时启动一次。