Ich habe einen kleinen Windows-Dienst geschrieben, der XML-Datei lesen wird, die von einer Windows-Anwendung erstellt und an einem bestimmten Speicherort gespeichert wird. Die XML-Datei enthält mehrere Startzeiten, Endzeiten und Ausführungszeiten, auf denen mein Windows-Dienst ein Excel-Blatt erstellt, indem er die SQL Server-Datenbank abfragt. Mein Problem ist in der Mitte meiner Code-Ausführung thread.sleep wird aufgerufen und mein Code wird nicht vollständig ausgeführt.wie man Timer und thread.sleep so konfiguriert, dass thread.sleep warten wird, bis der ganze Code ausgeführt wird
mein Program.cs Code:
namespace RepService
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main()
{
#if(!DEBUG)
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
#else
Service1 myServ = new Service1();
myServ.Start();
//Set the Thread to sleep
Thread.Sleep(60000);
//Call the Stop method-this will stop the Timer.
myServ.Stop();
#endif
}
}
}
meine Service1.cs Datei folgenden Code:
public Service1()
{
_aTimer = new System.Timers.Timer(30000);
_aTimer.Enabled = true;
_aTimer.Elapsed += new System.Timers.ElapsedEventHandler(_aTimer_Elapsed);
InitializeComponent();
}
void _aTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{//huge code to be executed
}
wie meine Timer und Thread.Sleep konfigurieren, so dass ich meinen Code Skipping vermeiden kann Ausführung wegen thread.sleep. Ich möchte meinen Dienst alle 15 Minuten ausführen. Der Aufgabenplaner kann nicht nach Bedarf verwendet werden.
Es gibt nicht viel Zeigen Sie, dass Sie nur eine Minute Zeit haben, Ihren Code zu debuggen. Wie wäre es mit einer Woche? Verwenden Sie Debug> Beenden Sie das Debuggen, wenn Sie bereit sind, nach Hause zu gehen. –
threa.sleep ist nur auf eine Minute eingestellt, aber wie kann ich es richtig einstellen? Ich weiß nicht – Tan