我在Dot-net中有一个Windows应用程序,它包含各种Analytics测试。当用户选择特定测试(复选框)并提交它(单击按钮)时,后端SQL查询将被执行,用户将获得该特定测试的结果集。
现在有一个要求是,用户将选择一个特定的测试,并给出一个时间戳(运行测试的时间),以使用自动调度程序获得输出的电子邮件ID(无需任何用户干预应用程序)。自动调度程序将在指定时间触发,并将运行特定的选定测试。
如何使用Windows应用程序实现自动调度程序?我正在尝试在Dot-net中创建Windows服务,但问题是该服务如何获取Windows应用程序的实例以及它将如何使用调度程序方法运行所选的测试?
据我了解,我只能使用调度程序运行脚本文件,因此如何在Dot-net中实现Windows应用程序的这些测试的自动调度。
答案 0 :(得分:0)
您可以使用Task Scheduler Managed Wrapper。手动下载并从项目中引用或使用nuget包安装。示例源代码和更多信息可在此处找到:Creating Scheduled Tasks
using System;
using Microsoft.Win32.TaskScheduler;
class Program
{
static void Main(string[] args)
{
// Get the service on the local machine
using (TaskService ts = new TaskService())
{
// Create a new task definition and assign properties
TaskDefinition td = ts.NewTask();
td.RegistrationInfo.Description = "Does something";
// Create a trigger that will fire the task at this time every other day
td.Triggers.Add(new DailyTrigger { DaysInterval = 2 });
// Create an action that will launch Notepad whenever the trigger fires
td.Actions.Add(new ExecAction("notepad.exe", "c:\\test.log", null));
// Register the task in the root folder
ts.RootFolder.RegisterTaskDefinition(@"Test", td);
// Remove the task we just created
ts.RootFolder.DeleteTask("Test");
}
}
}
干杯,