首页 文章

每2分钟运行一次任务计划程序

提问于
浏览
0

我想创建每2分钟触发一次的任务计划程序 . 我正在使用以下namesapce

使用Microsoft.Win32.TaskScheduler

我写了以下代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Win32.TaskScheduler;

namespace SchedulerTest1
{
    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());

                // Create an action that will launch Notepad whenever the trigger fires
                td.Actions.Add(new ExecAction("notepad.exe", "D:\\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");
            }
        }
    }
}

我想每2分钟运行一次任务 . 在我的代码中需要更新什么?帮我

4 回答

  • 2

    我刚刚遇到了同样的挑战 . 基本上你创建一个TimeTrigger并像这样设置间隔:

    // Get the service on the local machine
        using (var ts = new TaskService())
        {
          // Create a new task definition and assign properties
          TaskDefinition td = ts.NewTask();
          td.Settings.MultipleInstances = TaskInstancesPolicy.IgnoreNew;          
          td.RegistrationInfo.Description = "FTP, Photo and Cleanup tasks";
    
          // Create a trigger that will execute very 2 minutes. 
          var trigger = new TimeTrigger();
          trigger.Repetition.Interval = TimeSpan.FromMinutes(2);                    
          td.Triggers.Add(trigger);         
    
          // Create an action that will launch my jobs whenever the trigger fires
          td.Actions.Add(new ExecAction(System.Reflection.Assembly.GetExecutingAssembly().Location, null, Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)));
    
          // Register the task in the root folder
          ts.RootFolder.RegisterTaskDefinition(@"My Task Name", td);
        }
    
  • 0

    由于您使用的是Task Scheduler Managed Wrapper库,我建议您查阅Triggers的文档 . 更具体地说,请阅读如何使用 TimeTrigger 类以及如何使用它来指定重复间隔的示例 .

  • 2

    我不知道代码但是......你需要指定频率 . 在命令行上运行:

    schtasks / create / SC MINUTE / MO 2 / TN DoThis / tr“notepad d:\ test.log”

    这应该每2分钟重复一次(在cmd线上) .

  • 7

    如果你想在特定的时间触发,为什么不使用服务,例如,你的电脑会自动启动每2分钟

    Timer timer = new Timer();
    
    protected override void OnStart(string[] args)
        {
    
            //handle Elapsed event
            timer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
    
            //This statement is used to set interval to 2minute (= 60,000 milliseconds)
    
            timer.Interval = 120000;
    
            //enabling the timer
            timer.Enabled = true;
    
    
        }
     private void OnElapsedTime(object source, ElapsedEventArgs e)
        {
           // writr code here for 
          //run your Note pad file using process.start or using batch file
        }
    

相关问题