我想开发一个传递应用程序(自托管的WCF服务),该应用程序允许安排电子邮件。用户将分配时间表给电子邮件并发送。 WCF服务应该能够选择电子邮件并按计划的时间发送它。

我应该在这里使用什么方法?我正在考虑以下替代方案

  • 使用后台工作线程执行此任务
  • 任何第三方调度服务(我尚未对此进行调查)

  • 除了上述两个以外,谁能为我提出一个可行的解决方案?

    [编辑]:我可以为此使用SQL代理吗?

    谢谢,

    内存

    最佳答案

    我看到了“...除了上面提到的两个...”,但我认为没有其他方法可以实现这个目的:)
    在Windows服务内部构建一个无限循环,如下所示:

    private void DoTheThing()
        {
            try
            {
                while (true)
                {
                    TheThing e = new TheThing();
                    Thread t = new Thread(new ThreadStart(e.Run));
                    t.Start();
                    Thread.Sleep(1000);
                }
            }
            catch (ThreadAbortException) { }
            catch (Exception ex) { /* Whatever error handling you got */ }
        }
    

    ... TheThing有一个Run方法,它每1秒钟执行一次您需要的所有操作。这看起来很愚蠢(while(true)-是的,是的),但是自.NET 1.0以来在至少30台服务器上一直在不间断地工作:)只要确保在新线程中的Windows服务启动时调用此DoTheThing方法即可。

    希望这可以帮助 :)

    10-05 23:00