Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在特定时间从数据库执行事件的最佳方法_C#_Algorithm_Scheduled Tasks - Fatal编程技术网

C# 在特定时间从数据库执行事件的最佳方法

C# 在特定时间从数据库执行事件的最佳方法,c#,algorithm,scheduled-tasks,C#,Algorithm,Scheduled Tasks,我的数据库中有一个名为“提醒”的表。所以一排看起来像 Id Subject Time 1 "Foo" 2014-14-03 13:30:00 然后我想在2014-14-03 13:30:00上发送一封电子邮件。这样做的最佳方式是什么?我能想到的唯一解决方案是每分钟查询数据库,查看我需要发送哪些电子邮件。现在我需要一个windows服务和我的网站,因为windows服务需要不断运行。我想可能有更好的解决办法。我可以像排队一样思考。这只是一个想法。嗯,不仅仅是一个

我的数据库中有一个名为“提醒”的表。所以一排看起来像

Id    Subject     Time
 1     "Foo"      2014-14-03 13:30:00

然后我想在
2014-14-03 13:30:00
上发送一封电子邮件。这样做的最佳方式是什么?我能想到的唯一解决方案是每分钟查询数据库,查看我需要发送哪些电子邮件。现在我需要一个windows服务和我的网站,因为windows服务需要不断运行。我想可能有更好的解决办法。

我可以像排队一样思考。这只是一个想法。嗯,不仅仅是一个队列,更像是一个队列和一个堆栈在一起,是你自己创造的东西

这样,如果添加的新任务的时间少于第一个任务,则可以将此任务放在第一个位置

您可以创建一个队列/堆栈,然后将一个新元素排入队列,并启动一个计时器(或计数器),该计时器使用当前时间与已安排任务的时间之差。这样,您只需要检查其中一项任务

然后,当现在的时间等于队列中的第一个任务时,将此任务出列,并对新任务执行相同的操作。如果队列为空,则不需要对数据库执行任何操作,只需检查第一个任务中的时间


我希望这能有所帮助。

我可以像排队一样思考。这只是一个想法。嗯,不仅仅是一个队列,更像是一个队列和一个堆栈在一起,是你自己创造的东西

这样,如果添加的新任务的时间少于第一个任务,则可以将此任务放在第一个位置

您可以创建一个队列/堆栈,然后将一个新元素排入队列,并启动一个计时器(或计数器),该计时器使用当前时间与已安排任务的时间之差。这样,您只需要检查其中一项任务

然后,当现在的时间等于队列中的第一个任务时,将此任务出列,并对新任务执行相同的操作。如果队列为空,则不需要对数据库执行任何操作,只需检查第一个任务中的时间


我希望这能有所帮助。

我可以像排队一样思考。这只是一个想法。嗯,不仅仅是一个队列,更像是一个队列和一个堆栈在一起,是你自己创造的东西

这样,如果添加的新任务的时间少于第一个任务,则可以将此任务放在第一个位置

您可以创建一个队列/堆栈,然后将一个新元素排入队列,并启动一个计时器(或计数器),该计时器使用当前时间与已安排任务的时间之差。这样,您只需要检查其中一项任务

然后,当现在的时间等于队列中的第一个任务时,将此任务出列,并对新任务执行相同的操作。如果队列为空,则不需要对数据库执行任何操作,只需检查第一个任务中的时间


我希望这能有所帮助。

我可以像排队一样思考。这只是一个想法。嗯,不仅仅是一个队列,更像是一个队列和一个堆栈在一起,是你自己创造的东西

这样,如果添加的新任务的时间少于第一个任务,则可以将此任务放在第一个位置

您可以创建一个队列/堆栈,然后将一个新元素排入队列,并启动一个计时器(或计数器),该计时器使用当前时间与已安排任务的时间之差。这样,您只需要检查其中一项任务

然后,当现在的时间等于队列中的第一个任务时,将此任务出列,并对新任务执行相同的操作。如果队列为空,则不需要对数据库执行任何操作,只需检查第一个任务中的时间


我希望这会有所帮助。

您可以使用类库,在服务启动时定期阅读您的表格。

您可以使用类库,在服务启动时定期阅读您的表格。

您可以使用类库,在服务启动时定期阅读您的表格。

您可以使用类库,并在服务启动时定期阅读您的表。

我会使用NServiceBus,并有一个循环传奇,从db读取本地消息,并将需要发生的每件事情发送回总线,例如“发送电子邮件”“运行此脚本”,然后为每种消息类型执行处理程序。在这里查看第110行,它是如何循环的:

我能想到的其他方法有:

  • Quartz.NET(正如schglurps提到的)
  • 如果希望避免安装服务,请使用Windows scheduler计划exe每分钟左右运行一次,并执行它需要执行的操作
  • 如果你刚刚开始,我建议你采用这种方法
  • 嗯,,
    Eric

    我会使用NServiceBus,并有一个循环传奇,从db读取本地消息并将需要发生的每件事情发送回总线,例如“发送电子邮件”“运行此脚本”,然后为每种消息类型处理程序。在这里查看第110行,它是如何循环的:

    我能想到的其他方法有:

  • Quartz.NET(正如schglurps提到的)
  • 如果希望避免安装服务,请使用Windows scheduler计划exe每分钟左右运行一次,并执行它需要执行的操作
  • 如果你刚刚开始,我建议你采用这种方法
  • 嗯,,
    Eric

    我会使用NServiceBus,并有一个循环传奇,从db读取本地消息并将需要发生的每件事情发送回总线,例如“发送电子邮件”“运行此脚本”,然后为每种消息类型处理程序。在这里查看第110行,它是如何循环的:

    我能想到的其他方法有:

  • Quartz.NET(正如schglurps提到的)
  • 如果希望避免安装服务,请使用Windows scheduler计划exe每分钟左右运行一次,并执行它需要执行的操作
  • 如果你刚刚开始,我建议你采用这种方法
  • 嗯,, Eric

    我会使用NSer