我有一个C#控制台应用程序。我想一天中的每个小时都运行一次。此应用程序不打算在本地机器上运行,而是在其他用户机器上作为后台进程运行。我不希望用户使用任务调度程序手动设置任务。我怎么能为他做到这一点?调度任务c#
调度任务c#
回答
你可以将它设置为与1小时的间隔定时器运行。
请参阅此链接的例子 How do you add a timer to a C# console application
你也可以将它安装在用户的计算机上的Windows服务。
您还可以使用Quartz.net调度服务;在其最简单的形式中,它将作为Windows Service安装,并且计划配置在XML文件中。然后你可以让它在预定的时间调用你的代码。
我保留了一些笔记...不知道如果这有助于:
的Quartz.Net指南我希望我有
Quartz.Net非常全功能,只要我会读。如果您使用调度程序,以便您可以推迟任务,或将前端与某些较长的后端处理分离,则可以非常轻松地完成。
大困惑我的是石英可以以多种方式使用。您可以将其嵌入到您自己的应用程序或服务等中。另一个混淆是官方教程可能会使用一些更新,以便代码示例可以使用当前版本。最后,配置对于.net用户来说似乎很陌生;我习惯做类似于:
var myObject = new SuperUsefulClass();
myObject.ImportantSetting = SettingEnumeration.SomeValueThatIntellisenseSuggests;
myObject.OtherSetting = OtherSettingEnumeration.SomeValueThatIntellisenseSuggests;
通常我喜欢在LINQPad中探索一个新类。我将像上面那样实例化它,并且一直使用它,直到我在我的项目中使用它为止。
Quartz.Net的配置大约为外国对我的想象。但那是因为我忽略了使用Quartz.Net的最好的预建选项之一,而我忽略了Quartz上最好的教程之一。
对于我的用例,推迟任务,我最终意识到使用Quartz的最简单方法是使用预先构建的Windows服务。为此,我简单地修改了一个示例配置文件,并选择将所有作业,作业元数据等保存到SQL Server数据库中。
当谈到时间要执行的任务,石英Windows服务将调用指定的方法(当然,它实现了IJob接口)。为了使方法被调用,您的.dll或.exe(“集结号”在.net中的说法)必须在安装服务(Quartz.Service.exe)相同的文件夹。然后神奇地调用你的程序集中的方法。当然,如果你的方法读取外部文件,那么它们也必须复制到服务文件夹中,或者由程序集以某种方式访问。
几乎放弃之后,我碰到了Tarun Arora的教程。这是非常好的,因为我不能改进它,我只会链接到它。
Install Quartz.Net as a windows service and Test installation
Quartz.Net Writing your first Hello World Job
基本上:
- 欢迎调整quartz.config文件(类似于上面的代码)
- 安装Quartz.Net服务(Quartz.Service.exe )以管理员身份
- 将要执行的代码的程序集(.exe或.dll)放在与Quartz.Service.exe
- 启动服务
- 进行调度调用。即您的汇编代码将调用Quartz服务,Quartz服务会继续执行并在其本地系统上执行它们。
- 1. C#任务调度查询
- 2. 任务调度
- 3. CodeIgniter任务调度程序将任务调度到任务调度程序
- 4. Windows任务调度程序C#
- 5. 用于任务调度的C++代码
- 6. C#中的任务(预约)调度库?
- 7. 使用C的任务调度#
- 8. 任务调度的c代码
- 9. 推荐C#任务调度库
- 10. MPI任务调度
- 11. CRON:调度任务
- 12. Lua任务调度
- 13. Cordova调度任务
- 14. 调度Rake任务
- 15. 在任务调度
- 16. 与任务调度
- 17. 调度任务服务
- 18. 调度任务与服务
- 19. 任务并行(TPL)和任务调度在C#
- 20. 调度任务使用任务调度在php
- 21. 没有窗口任务调度程序的调度任务
- 22. 创建任务调度程序任务
- 23. 指定任务调度秒
- 24. 任务调度在Windows
- 25. 任务调度和WaitHandles
- 26. 任务调度设置
- 27. 调度任务与powershell
- 28. Laravel测试任务调度
- 29. VtigerCRM任务调度模块
- 30. iphone中的调度任务
服务是要走的路。 – Dan
http://taskscheduler.codeplex.com/看起来每个人都应该工作。你能建议哪一个应该很容易实现?我不想过度杀人。 – user2901683