【问题标题】:Using Quartz .net in windows Service在 Windows 服务中使用 Quartz .net
【发布时间】:2015-09-20 12:45:42
【问题描述】:

我一直在尝试重新创建一个 .net Windows 服务来利用 Quart 调度系统,而不是简单的计时器。到目前为止,当从一个单独的 GUI 应用程序中启动该服务时,该服务运行完美,该应用程序已构建为以交互模式运行该服务。但是,当从服务管理器中单独启动服务时,我在启动后立即收到 Windows 服务错误 1053(大多数情况下,它在一台计算机上启动了几次,但非常不一致,即使在重新启动后也是如此)。将调试器附加到进程后,我可以看到它在运行“GetScheduler()”时总是停止(但是程序永远不会抛出异常)

目前我正在创建一个调度工厂并从服务构造函数中运行 GetScheduler()。我已尝试在 OnStart() 方法中运行这些命令,但随后收到错误 1067。

另外因为 Quart 是开源的,我尝试导入它的代码并搜索我的程序在 GetScheduler() 中停止的位置,但它永远不会在同一个地方停止。

任何关于为什么我不能将程序作为服务运行的想法将不胜感激,谢谢

【问题讨论】:

  • 您的服务中是否有阻止应用程序结束的东西?如果不是,则在启动调度器后,主线程将无事可做,将退出,与他一起中止所有后台子线程。

标签: .net visual-studio-2012 windows-services quartz-scheduler quartz.net


【解决方案1】:

试试这个:

1)从github下载整个项目(https://github.com/quartznet/quartznet

2) 使用 Server 文件夹内容作为起点

3) 使用 topshelf 安装命令 (How can I automate a Topshelf interactive service install?)。通过查找在服务控制台 (services.msc) 中运行的 Quartz.Service 进行验证

4) 开箱即用,它附带一个作业 (SampleJob.cs) 将其作为您的第一份作业并从那里进行自定义。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    您是否在服务调用的可执行文件所在的同一路径中创建了quartz.config 文件? 如果是,请查看是否配置正确,请查看以下参考资料:

    可能发生的其他情况是,如果您将作业和触发器存储在数据库中,则必须使用具有访问系统数据库所需权限的适当帐户安装您的服务。如果是这个问题,您需要为您的服务创建一个安装程序,并将其配置为在安装过程中提示用户名和密码。 (https://msdn.microsoft.com/en-us/library/0x72fzyf(v=vs.110).aspx)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-14
      • 1970-01-01
      • 2013-09-13
      • 1970-01-01
      • 2011-07-01
      • 2014-08-28
      • 1970-01-01
      相关资源
      最近更新 更多