2015-05-11 6 views
0

теперь у меня есть приложение C#, которое работает 24/7 с таймером, который истекает через 30 секунд и что-то делает.Использование console.readline()

Я хочу сделать это приложение для службы Windows, чтобы работать в фоновом режиме. Но авария сервис сразу ..

Мой код:

public static System.Timers.Timer _timer = new System.Timers.Timer(); 

static void Main(string[] args) 
{ 
     _timer.Interval = 30000; 
     _timer.Elapsed += timerCallback; 
     _timer.AutoReset = true; 
     _timer.Start(); 
} 
public static void timerCallback(Object sender, System.Timers.ElapsedEventArgs e) 
{ 
     // Do anything.. 
} 

И ошибка:

Windows could not start the Application service on Local Computer.

Error 1053: The service did not respond to the start or control request in a timely fashion

В окне просмотра событий Windows это сообщение произошедшей:

A timeout was reached (30000 milliseconds) while waiting for the Application service to connect.

Но ошибка появляется быстрее, чем 30 секунд ?!

Любые решения для запуска службы? Благодаря

Майкл

+1

Вы можете разместить код и трассировку стека, сохраненную в журнал событий при сбое? –

+0

Вы взглянули на этот вопрос: http://stackoverflow.com/questions/3736599/run-a-wpf-application-as-a-windows-service – Matt

+1

Службы Windows обычно не предназначены для взаимодействия с рабочим столом. Вместо использования 'Console.ReadLine()', чтобы предотвратить остановку службы, просто введите непрерывный цикл, если не возникает ошибка. – Tim

ответ

3

Вы можете использовать Timer для выполнения логики периодически в пределах окна службы,

protected override void OnStart(string[] args) 
{ 
    base.OnStart(args); 

    Timer timer = new Timer(); 
    timer.Interval = 30*1000; 
    timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); 
    timer.Enabled = true; 
    timer.Start(); 
} 

private void timer_Elapsed(object sender, ElapsedEventArgs e) 
{ 
    //put logic here that needs to be executed for every 30sec 
} 
+0

Thats точно, что у меня есть до сих пор, но служба не работает onstart – ZerOne

+0

лучше отладить службу, следуйте [этим] (https://msdn.microsoft.com/en-us/ библиотека/7a50syb3 (v = vs.110) .aspx). посмотрите, что происходит внутри. – Kurubaran

+0

Я думаю, что ошибка в том, что у меня нет функции OnStart, и класс не является производным ServiceBase? – ZerOne

Смежные вопросы