每x秒呼叫/启动Windows服务的最佳方法是什么?

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吗?那我怎么处理呢?我每次都要创建一个新线程并将其放入队列吗?

Jon*_*eet 7

睡觉通常是个坏主意.除此之外,它意味着您不会快速响应Stop事件.

你应该用一个Timer.有两个适合服务:

在每种情况下,您基本上都会说出每次定时器"滴答"以及何时需要触发时您想要发生的事情.

我的线程教程有一节解释了可用定时器之间的一些差异.

我不确定您的WCF问题,但我认为您的Web服务不会明确启动该服务 - 它只是通过WCF联系它.是的,你可能需要小心线程.您需要注意的正是取决于WCF服务所暴露的内容.