我想使用http://taskscheduler.codeplex.com/
我可以在示例中使用它来安排外部动作。
我可以使用它来安排我的内部操作,还是可以使用其他东西来执行外部任务?
e.g。 :
public static void cstask() {
using (TaskService ts = new TaskService()) {
const string taskName = "Test2";
System.Action test = new System.Action( () => {
;
}
);
Task t = ts.AddTask(taskName,
new TimeTrigger() { StartBoundary = DateTime.Now + TimeSpan.FromHours(1), Enabled = false },
//new ExecAction("notepad.exe", "c:\\test.log", "C:\\")
(Microsoft.Win32.TaskScheduler.Action)test
);
ts.RootFolder.DeleteTask(taskName);
}
}
- >
Cannot convert type 'System.Action' to 'Microsoft.Win32.TaskScheduler.Action'
答案 0 :(得分:2)
似乎是Reactive Extensions
using System.Reactive;
using System.Reactive.Linq;
和
IDisposable subscription =
Observable
.Interval(TimeSpan.FromHours(1))
.Take(1)
.Subscribe(i =>
{
Console.WriteLine("I'm doing something delayed by an hour");
});
将订阅配置为在运行之前将其终止。如果你想要你的 任务返回处理然后有点不同。
double SomeFunction(){
...
}
和
public async double DoItInOneHour(){
return await Observable
.Interval(TimeSpan.FromHours(1))
.Take(1)
.Select( i=> SomeFunction());
}
将异步等待超时,评估SomeFunction然后返回 价值的结果。
答案 1 :(得分:1)
您无法直接使用Windows任务计划程序调用System.Action。
但您可以创建执行应用程序的计划任务。调用内部操作所需的信息可以通过命令行参数传递。