2012-04-10 3 views
0

Ich schrieb einen Windows-Dienst, der meine Klasse Bibliothek alle 15 Minuten Intervall wird die Klasse ausführen.Windows-Dienst wirkt zwei verschiedene Weise auf der Maschine

Es funktioniert gut, wenn ich den Windows-Dienst in meinem Computer bereitgestellt, funktioniert der Timer gut und alle 15 Minuten ruft es meine Klassenbibliothek, aber wenn ich auf meinem Server bereitgestellt wird, funktioniert es nur auf onstart, nachdem es die nicht erhöht Timer oder alle 15 Minuten nehme meine Klasse lib, leite mich bitte jemand geschieht nicht zu nennen, was hier wohl zu meinen Code

public partial class Service1 : ServiceBase 
{ 
    private Timer _timer; 
    private DateTime _lastRun = DateTime.Now; 

    public Service1() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnStart(string[] args) 
    { 
     log4net.Config.XmlConfigurator.Configure(); 

     _timer = new Timer(10 * 60 * 1000); // every 10 minutes 
     _timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed); 
     Shell Distribute= new Shell(); 
     Distribute.Distribute(); 
_timer.start();//this line was missed in my original code 
    } 

    protected override void OnStop() 
    { 
     this.ExitCode = 0; 
     base.OnStop(); 

    } 
    private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 
    { 
     //if (_lastRun.Date < DateTime.Now.Date) 
     //{ 

try 
{ 
_timer.Stop(); 
Shell Distribute= new Shell(); 
Distribute.Distribute(); 
} 
catch(exception ex) 
{} 
finally 
{ 

      _timer.Start(); 
} 
     //} 
     } 

    } 
} 

ich zu Fragen, das Problem

hier zu identifizieren stark log glauben bin mir aber aus zwei gründen nicht sicher, ob ich diesen service in meinem testserver mit dem gleichen konto starten oder neustarten kann, funktioniert aber gut Nur der Timer funktioniert nicht. Der Code ist genau das gleiche, also mache ich mir keine Gedanken über meinen Code bcoz es funktioniert Timer in meinem lokalen Rechner mit dem gleichen Konto basiert. Vielen Dank im Voraus.

+1

Schauen Sie sich Ratschläge zu dieser Frage http://stackoverflow.com/questions/397744/net-windows-service-with-timer-stops-responding – Nikolay

+0

Blick Ereignisanzeige für mögliche Fehlerprotokolle. –

+0

@ Özgür Kara, das erste, was ich getan habe, ist die evenvwr überprüft, aber es hat keine Informationen über meinen Service, alles, was ich in "Application" log sehen kann, wenn der Service beginnt. – Usher

Antwort

0

Ich bin mir nicht sicher, warum mein Dienst jetzt auf Timer basiert, alles was ich getan habe, ist das Log in den Code wie unten hinzuzufügen, um herauszufinden, was vor sich geht, aber zum Glück funktioniert es wie ein Zauber.

protected override void OnStart(string[] args) 
    { 

     log4net.Config.XmlConfigurator.Configure(); 
     log.Debug("Service Called when Onstart"); 
     _timer = new Timer(10 * 60 * 1000); // every 10 minutes 
     log.Debug("calling Distributor Method"); 
     Shell Distributor = new Shell(); 
     Distributor.Distribute(); 

     log.Debug("calling timer Elapsed"); 
     _timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed); 
     log.Debug("start the timer"); 
     _timer.Start(); 

    } 

    protected override void OnStop() 
    { 
     log.Debug("stop the timer in OnStop method"); 
     this.ExitCode = 0; 
     base.OnStop(); 

    } 
    private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 
    { 

     log.Debug("IN Timer Elapsed method"); 
     try 
     { 
      log.Debug("IN try block and calling timer stop function"); 
      _timer.Stop(); 
      log.Debug("Distributor Method Called from try block"); 
      Shell Distributor = new Shell(); 
      Distributor.Distribute(); 


     } 
     catch (Exception ex) 
     { 
      log.Debug("IN Catch Block"); 
      log.Debug(ex.Message); 
     } 
     finally 
     { 
      _lastRun = DateTime.Now; 
      log.Debug("IN Final Block"); 
      log.Debug("start the timer"); 
      _timer.Start(); 
      log.Debug("Exit the Timer Elapsed Method"); 
     } 
Verwandte Themen