-1

バックグラウンドで特定の時間にexeを実行するサービスを作成しました。サービスが毎日同時にexeを実行するようにタイマーを設定したい..どうすればそれができる..??? サービスクラスで書いているコードは次のとおりです。

public partial class Service1 : ServiceBase
{
    string time = DateTime.Now.ToShortTimeString();
    Process p = new Process();

    public Service1()
    {
        InitializeComponent();
    }

    protected override void OnStart(string[] args)
    {
        BackgroundWorker bw = new BackgroundWorker();
        bw.DoWork += new DoWorkEventHandler(DoWork);
        bw.RunWorkerAsync();
    }

    private void DoWork(object sender, DoWorkEventArgs e)
    {
        p.StartInfo = new ProcessStartInfo(@"c:\windows\ccm\ccmeval.exe");

        if (time == "6:55 PM")
        {
            p.Start();
            p.WaitForExit();
            base.Stop();
        }
    }

    protected override void OnStop()  { }
4

1 に答える 1

0

毎日午前 6 時 30 分に各タスクを実行するとします。

        var dtTimeToStartAt = DateTime.Today.AddHours(6).AddMinutes(30);
        dtTimeToStartAt = DateTime.Now > dtTimeToStartAt ? dtTimeToStartAt.AddDays(1) : dtTimeToStartAt;

        var timer = new System.Threading.Timer(x => YourCallbackMethod(), new object() /*not much use*/,
                                           dtTimeToStartAt.Subtract(DateTime.Now), new TimeSpan(24, 0, 0));
于 2013-07-23T06:04:22.277 に答える