C#服务定时获取数据

时间:2012-10-03 14:05:27

标签: c# service timer copy timed

我需要创建一个服务,安装在本地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);
      }
    }
}

1 个答案:

答案 0 :(得分:0)

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

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

如果必须拥有执行此操作的服务,请不要依赖计时器,请使用Quartz.NET,因为它具有非常丰富的支持安排任务/工作等,是专门为此目的而创建的。

在这种特殊情况下,SimpleTrigger实例会执行此操作,只需为其提供您希望运行任务的repeatInterval

如果你需要支持“每周五中午”的概念(由于夏令时之类的事情你需要这个概念),那么你需要一个CronTrigger

设置好触发器后,根据触发器的触发执行simple matter of setting up the schedule and job