0

我需要创建一个服务以安装在本地 PC 上,该服务将定期查找服务器上的文件路径,并将其内容复制并粘贴到本地 PC 上的目标位置。我想将它设置为每六或十二小时左右运行一次。我还需要它来使用提升的凭据运行复制命令。我们不能使用计划任务,因为我们的组策略由于病毒而禁用了这些任务。以下是我目前所拥有的,并不多。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceProcess;
using System.IO;
using System.Timers;

namespace PHSReportUpdater
{
  public class Timer1
  {
      private static System.Timers.Timer aTimer;

      public static void Main()
      {
          // Create a timer with an interval
          aTimer = new System.Timers.Timer(600000);

          // Hook up the Elapsed event for the timer
          aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

          // Set the Interval
          aTimer.Interval = 21600000;
          aTimer.Enabled = true;
      }

      private static void OnTimedEvent(object source, ElapsedEventArgs e)
      {
          string reportSource;
          string reportDest;
          reportSource= @"V:\PrivateFolders\McKesson Surgery & Anesthesia\Crystal Reports\ProMedica Custom Reports\PHS PC\*.rpt";
          reportDest= @"C:\Program Files\McKesson\PHS\VER15.0\Reports";
          File.Copy(reportSource, reportDest);
      }
    }
}
4

1 回答 1

0

“由于病毒而禁用那些?” - 这很可疑。听起来问题出在机器上的另一个应用程序/任务计划上,而不是任务计划程序本身。

任务调度器是这里的方法,没有理由将它用于定期调度(让它运行你的控制台应用程序)。

如果你必须有这样的服务,那么不要依赖计时器,使用Quartz.NET,因为它对调度任务/作业等有非常丰富的支持,并且是专门为此目的而创建的。

在这种特殊情况下,一个SimpleTrigger实例会做,只要给它repeatInterval你希望你的任务运行的那个。

如果您需要支持“每个星期五中午”的概念(由于夏令时等原因,您需要它),那么您需要一个CronTrigger.

设置好触发器后,只需根据触发器的触发设置要执行的计划和作业即可。

于 2012-10-03T15:29:24.363 回答