2012-01-31 5 views
0

Я написал службу Windows, но когда я установил ее, я обнаружил, что она не работает. Я не знаю, в чем проблема!нужна помощь в обслуживании Windows

этот сервис перемещает некоторый файл из одного места в другое!

мне нужна помощь

благодаря

public partial class Service1 : ServiceBase 
    { 


     public Service1() 
     { 
      InitializeComponent(); 
     } 

     protected override void OnStart(string[] args) 
     { 
     } 
     protected override void OnContinue() 
     { 
      const string SrcPath = "d:\\Source"; 
      const string DisPath = "d:\\Dist\\"; 
      if (Directory.Exists(SrcPath)) 
      { 
       string[] files = Directory.GetFiles(SrcPath); 
       for (int i = 0; i < files.Length; i++) 
       { 
        Console.WriteLine(files[i]); 
        string[] list = files[i].Split('\\'); 
        if (!File.Exists(DisPath + list[list.Length - 1])) 
        { 
         File.Move(files[i], DisPath + list[list.Length - 1]); 
        } 
       } 
      } 
     } 
     protected override void OnStop() 
     { 
     } 
} 
+2

Проверили ли вы войти событие? – Oded

+0

нет, это моя первая услуга, и я ничего об этом не знаю. знаете ли вы какую-либо ссылку на учебные услуги? – Rasoul

+0

http://msdn.microsoft.com/en-us/library/y817hyb6(v=vs.100).aspx –

ответ

2

Это потому, что вы ничего не делаете в методе OnStart(). У вас должна быть логика, которую вы хотите там. OnContinue() увольняется, когда из SCM запускается команда «Продолжить».

ServiceBase.OnStart() Method Reference

1

Просто, чтобы добавить к тому, что сказал Шарк, я предположил бы, что вы не хотите, чтобы это просто работа один раз, а затем эффективно мертв. Поэтому вам нужно иметь какой-то механизм для периодического определения, нужно ли выполнять работу, затем выполнять работу, а затем немного подождать и повторить.

В противном случае я предлагаю вам просто взглянуть на установку пакетного сценария в планировщике задач Windows.

0

Вы должны добавить Somthing в свой OnStart

System.Timers.Timer timer = new System.Timers.Timer(); 

     protected override void OnStart(string[] args) 
     { 
      timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); 
      timer.Enabled = true; 
      timer.Interval = AppSettings.PeriodOfQuering; 
     } 

     void timer_Elapsed(object sender, ElapsedEventArgs e) 
     { 
      DoJob(); 
     }