【发布时间】:2012-11-29 03:18:49
【问题描述】:
我使用 vb.net 开发了一个 Windows 服务,它使用 OnStart Even...
- 从 SQL 表中获取所有条目
- 根据返回的行创建计划
它工作正常,安排他们的时间和东西。
问题:每当我必须向表中添加新行时,我必须重新启动服务,以便它可以抓取新创建的行。这给我带来了问题...可能有一个任务已经在运行,重新启动服务可能会破坏系统。
那么处理这个问题的最佳方法是什么?是否可以在不重新启动的情况下将新行加载到 Service 中?
谢谢
【问题讨论】:
-
您可以标记条目,例如带有标志或添加行的日期/时间,并让服务定期检查新行。您可以使用表上的插入触发器通过服务代理为服务排队消息。这取决于您是否愿意拉取或推送新数据。
-
但是如何....OnStart 事件一次性加载所有 ROWS。我无法使用新行再次触发 onStart 事件。我一定在这里遗漏了什么。
-
OnStart 将需要启动另一个工作线程。该线程将通过等待计时器定期检查数据库,或者将连接到队列并等待消息。该线程如何将任何新数据集成到您的计划中取决于您的应用程序。 OnStart 不应进行耗时的处理。它应该启动一个或多个工作线程,然后返回到服务控制器。
-
如果可以为onStart事件搭建一个非常简单的基本代码结构就好了。
-
有一个编码OnStart here的最小例子。
标签: c# vb.net winforms windows-services