Windows Service

Thorsten Brach

Grünschnabel
Hallo !

Ich wollte unter VB.NET einen Windows Service erstellen...

Hab da auch das ein oder andere Beispiel gefunden.

Ich habe nur ein Problem - wenn ich meinen Dienst starte , wird er automatisch angehalten...

Ich hätte natürlich gerne, dass mein Service immer läuft.


Hab es wie in den Beispielen gemacht - Hab nen Timer genommen und mit dem Tick Event führe ich meinen Code aus - wobei mir das eigentlich auch überhaupt nicht gefällt...

Wie kann ich meinen Code dauerhaft durchlaufen lassen ?

OnStart wird ja nur beim Starten ausgeführt...


Zur Not kann ich auch mit dem Tick-Event arbeiten - aber wie gesagt mein Dienst wird direkt nach dem Starten angehalten...


Vorab schon mal Danke für Eure Hilfe


mfg

Thorsten
 
Also wenn dein Dienst anhält, dann hat es wohl einen Fehler. Hierzu würde ich in das Systemlog schreiben um etwaige Probleme zu finden.

Des weiteren stellt sich die Frage was du machen willst. Denn ohne dieses Wissen kann dir niemand sagen ob dein Ticker da gut ist oder ob sich nicht etwas anderes wesentlich besser eignet.
 
Hallo Norbert ,


Bin mittlerweile im Ereignissprotokoll drüber gestollpert - hatte tatsächlich noch einen Fehler im Code.

Den hab ich jetzt behoben - und siehe da: schon läuft der Dienst dauerhaft ;-) ***freu***

Ich will einen Serverdienst schreiben, der Daten von einer Maschinensteuerung (Codesys Runtime von 3S) über die Socketschnittstelle empfängt und die Daten in einer SQL Datenbank aufbereitet...


Deshalb bin ich mit dem Tick-Event nicht so ganz glücklich...




mfg

Thorsten
 
Verständlich.

Beim Startup einfach einen eigenen Thread erstellen, in dem du einen Socket aufmachst, der auf Daten lauscht und beim Ankommen entsprechend verarbeitet.
 
Danke Norbert !


Aber ich muss noch mal Nerven :rolleyes:


Ich habe jetzt einen Thread im "OnStart" gemacht - allerdings tut sich dort nichts

hier mal ein Codeauszug :

Public Class SocketComService
Inherits System.ServiceProcess.ServiceBase

Dim thrdDelegate As New ThreadStart(AddressOf SocketCom)
Dim SocketComThread As New Thread(thrdDelegate)

......usw

Protected Overrides Sub OnStart(ByVal args() As String)

SocketComThread.Start()

End Sub


Private Sub SocketCom()

' nur zur Ausgabe in Datei - damit man was sehen kann....

call Log("Thread wurde durchlaufen")

End Sub

Private Sub Log(ByVal s As String)
Dim datName As String = "Log.txt"
Dim writer As StreamWriter = File.CreateText(datName)

writer.WriteLine(s)
writer.Close()

End Sub


PS: Vielleicht sollte ich noch erwähnen, dass ich absoluter VB.NET Rookie bin :confused:


mfg

Thorsten
 
man man man - Guten Morgen :suspekt:

Vielleicht sollte man einfach im System32 Ordner kucken statt im Bin-Ordner...

Dann findet man auch sein Log-File mit entsprechenden Einträgen...
 
Zuletzt bearbeitet:
Hi!

1) Wenn die Frage bzw das Problem ist bitte den "Erledigt" Button klicken, dann erspar ich mir das reinschaun
2) Codes bitte immer in die dazu gehörigen Code Tags posten, danke.
 
Zurück