当前位置: 首页 > 编程语言 > C#

获取正在Windows服务上运行的调度程序的实例分享

时间:2023-04-10 14:35:16 C#

C#学习教程:获取在Windows服务上运行的调度程序的实例在Sqlite上)。我需要在我的Windows应用程序上控制此服务,以便我可以停止它、启动它、添加和删除作业等。如何获得此调度程序的实例?很抱歉,如果这听起来像是一个简单的问题,但Quartz.NET上的文档似乎还不够。只有少数人知道这一点,他们已经有了生命。更新:我的服务的quartz.config文件#你可以在配置部分配置你的调度器#或者在quartz属性文件中#配置部分优先quartz.threadPool.type=Quartz.Simpl.SimpleThreadPool,Quartzquartz.threadPool.threadCount=10quartz.threadPool.threadPriority=Normal#作业初始化插件处理我们的xml读取,没有它默认使用.xmlquartz.scheduler.exporter.type=Quartz.Simpl.RemotingSchedulerExporter,Quartzquartz.scheduler.exporter.port=555quartz.scheduler.exporter.bindName=QuartzSchedulerquartz.scheduler.exporter.channelType=tcpquartz.scheduler.exporter.channelName=httpQuartz我在我的程序中使用的代码来获取调度程序:NameValueCollectionproperties=newNameValueCollection();properties["quartz.scheduler.instanceName"]="RemoteClient";//正确设置线程池信息ties["quartz.threadPool.type"]="Quartz.Simpl.SimpleThreadPool,Quartz";属性["quartz.threadPool.threadCount"]="10";properties["quartz.threadPool.threadPriority"]="Normal";//设置远程expoter属性["quartz.scheduler.proxy"]="true";属性["quartz.scheduler.proxy.address"]="tcp://127.0.0.1:555/QuartzScheduler";ISchedulerFactorysf=newStdSchedulerFactory(属性);ISchedulersched=sf.GetScheduler();我的服务已安装并启动,它以“本地系统帐户”身份登录,我可以与桌面进行交互您的服务可以通过修改配置文件来公开调度程序:然后您的Windows应用程序可以使用适当的设置访问它://您也可以将它们放在配置文件中。NameValueCollection属性=newNameValueCollection();properties["quartz.scheduler.instanceName"]="RemoteClient";//设置线程池信息properties["quartz.threadPool.type"]="Quartz.Simpl.SimpleThreadPool,Quartz";属性["quartz.threadPool.threadCount"]="5";属性["quartz.threadPool.threadPriority"]="正常";//设置远程expoter属性["quartz.scheduler.proxy"]="true";properties["quartz.scheduler.proxy.address"]="tcp://127.0.0.1:555/QuartzScheduler";ISchedulerFactorysf=newStdSchedulerFactory(属性);ISchedulersched=sf.GetScheduler();quartz.netmaster包含很多您在文档中找不到的好例子。启动和停止Windows服务与Quartz无关。似乎有一个.NETAPI,但我不熟悉它。至于添加和删除工作。您将无法获得Windows服务调度程序的实例。有两种方法可以修复它。定义WCF契约并在Windows服务中承载WCF服务。这很简单。您不需要IIS或HTTP。在这种情况下,我建议使用TCP绑定。由于您已经在使用ADO作业存储,因此您可以将Windows应用程序和Windows服务设置为Quartz集群:添加应用程序和Web配置。如果我没记错的话,不需要额外的代码。此外,您可以通过设置零大小的线程池来阻止Windows应用程序表单执行作业:现在您在Windows应用程序中实例化一个调度程序并使用它来添加和删除作业。作业将存储在ADO作业存储中并由Windows服务获取。显然,应用程序和服务必须配置相同的ADO作业集,并且Windows应用程序必须能够访问sqlite数据库。还有一件事。使用第二种方法,您将无法从Windows应用程序中断正在运行的作业。以上就是C#学习教程:获取Windows服务上运行的调度器实例共享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收集,不代表作品如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: