1

2 分ごとにトリガーするタスク スケジューラを作成したいと考えています。次の名前空間を使用しています

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

5 に答える 5

9

私はちょうど同じ挑戦をしました。基本的に、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);
    }
于 2013-03-10T13:40:07.410 に答える
2

Task Scheduler Managed Wrapperライブラリを使用しているため、 Triggersのドキュメントを参照することをお勧めします。より具体的には、TimeTriggerクラスの使用方法と、それを使用して繰り返し間隔を指定する方法の例を読んでください。

于 2012-08-02T02:47:15.227 に答える
2

コードではわかりませんが...頻度を指定する必要があります。コマンドラインでこれを実行します。

schtasks /create /SC MINUTE /MO 2 /TN DoThis /tr "メモ帳 d:\test.log"

これは 2 分ごとに繰り返す必要があります (コマンドラインで)。

于 2012-08-01T13:13:55.237 に答える
1

特定の時間にトリガーしたい場合は、サービスを使用しないでください。たとえば、2分ごとに自動的にPCが起動します。

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
    }
于 2013-11-23T10:43:25.933 に答える