【问题标题】:Can I use Win32.TaskScheduler to schedule my procedures?我可以使用 Win32.TaskScheduler 来安排我的程序吗?
【发布时间】:2013-07-25 06:52:13
【问题描述】:

我想用http://taskscheduler.codeplex.com/

我可以在示例中使用它来安排外部操作。

我可以用它来安排我的内部行动,或者我应该用其他东西来完成外部任务吗?

例如:

    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'

【问题讨论】:

    标签: c# .net scheduled-tasks scheduler


    【解决方案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 然后返回 结果值。

      【讨论】:

      • 啊,但是 RX 不像您所指的 TaskScheduler 那样持久。所以这可能不是你想要的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 2021-05-24
      相关资源
      最近更新 更多