Gadric Geschrieben 6. Oktober 2006 Teilen Geschrieben 6. Oktober 2006 Servus zusammen Ich habe nun gestern den kompletten Tag rumprobiert und gesucht im Internet. Doch nirgends eine Lösung gefunden bisher. Mein Problem.. Der Timer wird nicht ausgeführt im Dienst. Warum? Keine Ahnung. Der Code ist der gleiche wie in der OnStart Methode. Der Zeitintervall ist auf 10000MS gelegt. Es soll also alle 10 Sekunden etwas in eine Datei geschrieben werden. In OnStart steht auch Timer1.enabled = True.. aber, es passiert nichts. Ein engl. Tutorial hab ich schon gelesen aber hilft leider bei meinem Problem auch nicht weiter. Hat jemand vllt eine idee, oder einen Code bei dem der Timer_Tick 100% funktioniert? Dazu kommt manchmal das Problem.. Wenn ich den Dienst installiert habe und starten will, kommt: "Der Dienst "blubb" wurde gestartet und dann angehalten. Einige Dienste werden automatisch angehalten.." usw Warum kommt das? Sowohl in OnStart, als auch in OnContinue sowie Timer_Tick ist was drin. MfG Gadric Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gadric Geschrieben 6. Oktober 2006 Autor Teilen Geschrieben 6. Oktober 2006 [EDIT] (-.-).. Es geht umVB.net Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Anybody Geschrieben 6. Oktober 2006 Teilen Geschrieben 6. Oktober 2006 wie wärs mit Timer.Start() ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gadric Geschrieben 6. Oktober 2006 Autor Teilen Geschrieben 6. Oktober 2006 Die Idee ist gut, hatte sie auch schon, erziehlt nur leider ebenso wenig einen Effeckt wie Timer.Enable :/ Besonders wundert mich eben, das der Timer in einer "normalen" Windows Anwendung so läuft wie ich es mir vorstelle. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ShaaitanTX Geschrieben 9. Oktober 2006 Teilen Geschrieben 9. Oktober 2006 Welchen Timer benutzt du denn ?! VB.NET hat ja immerhin insgesamt 3 Stück davon die sich immer ein wenig unterscheiden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gadric Geschrieben 9. Oktober 2006 Autor Teilen Geschrieben 9. Oktober 2006 Hm.. Ich sehe nur einen unter "Komponenten" in der Toolbox. Timer_Tick funktioniert nicht.. am Freitag hatte ich es aber kurz mit Addhandler TimerElapsed zum laufen gebracht. Hab aber wieder irgendwas geändert, das es nicht läuft. Aber eigentlich nur den Namen des Service -.- Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ShaaitanTX Geschrieben 9. Oktober 2006 Teilen Geschrieben 9. Oktober 2006 Ich mache kurz ne grobe Zusammenfassung da ich nachher Schulung hab: 1. System.Windows.Forms.Timer Die Ereignisse laufen Synchron zum Thread der Form auf der er definiert wurde. 2. System.Timers.Timer Wird eher asynchron zum HauptThread ausgeführt, kann man aber auch mit SynchronizingObject wieder synchron machen [quasi der Allrounder] 3. System.Threading.Timer Sozusagen die Umsetzung eigener Timer-Implementationen. Vollkommen asynchron und führt jedes Ereignis in nem speraten Thread aus. Bei dem wäre eine Container-Klasse mit allen Funktionen am günstigsten. AFAIR müsste der Timer den du benutzt unter die erste Kategorie fallen. Ich hab mal irgendwo gelesen das der Windows.Forms.Timer nicht so toll sein soll - würde dir empfehlen mal den 2ten zu probieren. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gadric Geschrieben 9. Oktober 2006 Autor Teilen Geschrieben 9. Oktober 2006 Benutze den 2. da der Windows.Forms im Dienst ja eh nicht funktionieren würde, oder? ^^ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ShaaitanTX Geschrieben 9. Oktober 2006 Teilen Geschrieben 9. Oktober 2006 Ka, nie so direkt getestet Kannst du ein Stück Code posten damit ich mir das angucken kann ?! Hab grad nur Pause aber nach 15 Uhr müsst ich Zeit haben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gadric Geschrieben 9. Oktober 2006 Autor Teilen Geschrieben 9. Oktober 2006 Imports System.io Imports System.Timers Public Class MyService Dim theTimer As New System.Timers.Timer Protected Overrides Sub OnStart(ByVal args() As String) theTimer.Enabled = True 'Timer event AddHandler theTimer.Elapsed, AddressOf onTimeElapsed 'Interval auf 2 Minuten theTimer.Interval = 2000 'Logfile schreiben write(DateTime.Now & " Dienst gestartet") 'Timer am laufen halten GC.KeepAlive(theTimer) End Sub Protected Overrides Sub OnStop() 'Beim stoppen Timer beenden theTimer.Enabled = False 'Logfile schreiben write(DateTime.Now & " Dienst beendet") End Sub Private Sub onTimeElapsed(ByVal source As Object, ByVal e As ElapsedEventArgs) 'Logfile schreiben write(DateTime.Now & " Event wird ausgeführt..") write(DateTime.Now & ".. Event wurde ausgeführt") End Sub 'Logfile schreiben Methode Public Sub write(ByVal text) Dim fs As FileStream = New FileStream("C:\local_files\rssServerDienst.log", FileMode.OpenOrCreate) fs.Seek(0, SeekOrigin.End) Dim sw As StreamWriter = New StreamWriter(fs) sw.WriteLine(text) sw.Close() fs.Close() End Sub End Class Der komplette Code. Ich kann da nix falsches entdecken. Viell hab ich irgendwo beim Installer rumgefuscht und was kaputt gemacht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ShaaitanTX Geschrieben 9. Oktober 2006 Teilen Geschrieben 9. Oktober 2006 Sorry das ich jetzt erst antworte - war doch noch ein stressiger Tag. Änder mal "theTimer.Enabled = True" in "theTimer.BeginInit()" und "theTimer.Enabled = False" in "thetimer.EndInit()" Das ".Enabled" ruft das elapsed-Ereignis auf bzw ob er darauf reagieren soll. Aber AFAIR wird der Timer mit init gestartet. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Mephisto81 Geschrieben 12. Oktober 2006 Teilen Geschrieben 12. Oktober 2006 hallo, kurze Zwischenfrage: Benutzt du zufällig Windows 2003 Server? Wenn ja, ein Kollege hatte letztens einige Schwierigkeiten mit .Net Timer Typen unter diesem Betriebssystem. Die Umstellung auf System.Threading.Timer brachte den gewünschten Erfolg Kann leider keine genaueren Informationen dazu liefern, weil der Kollege jetzt längere Zeit unterwegs ist, aber vielleicht hilft dir der Hinweis ja ein wenig. greetz mep Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.