mic*_*win 1 asp.net wcf windows-services
我有一个Windows服务,它基本上是访问邮箱和阅读电子邮件.我试图找出每隔x秒检查一次邮箱的最佳方法.
一种方法是调用Thread.Sleep,然后再次调用Start方法,例如
protected override void OnStart(string[] args)
{
// get config settings
CheckMailbox();
}
public void CheckMailbox()
{
int x = 5000;
// do stuff
Thread.Sleep(x);
CheckMailbox();
}
Run Code Online (Sandbox Code Playgroud)
不确定这是否是最佳方式.为了进一步探讨这一点,我了解您可以通过WCF公开服务来调用Windows服务.在这种情况下,如果一个名为Process的Web应用程序启动,那么我会纠正Threads吗?那我怎么处理呢?我每次都要创建一个新线程并将其放入队列吗?
睡觉通常是个坏主意.除此之外,它意味着您不会快速响应Stop事件.
你应该用一个Timer.有两个适合服务:
在每种情况下,您基本上都会说出每次定时器"滴答"以及何时需要触发时您想要发生的事情.
我的线程教程有一节解释了可用定时器之间的一些差异.
我不确定您的WCF问题,但我认为您的Web服务不会明确启动该服务 - 它只是通过WCF联系它.是的,你可能需要小心线程.您需要注意的正是取决于WCF服务所暴露的内容.