2013-07-25 56 views
1

我想使用http://taskscheduler.codeplex.com/我可以使用Win32.TaskScheduler来安排我的程序吗?

我可以在示例中调度与它相似的外部动作。

我可以安排我的内部行动吗?或者我应该使用别的外部任务?

例如:

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' 

回答

1

您无法直接使用Windows任务计划程序调用System.Action。

但是,您可以创建执行应用程序的计划任务。调用内部操作所需的信息可以通过命令行参数传递。

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然后返回 的结果值。

+0

啊,但是RX并不像你指的TaskScheduler那样持久。所以这可能不是你正在寻找的。 – bradgonesurfing

相关问题