Hallo VB-Freunde,
seit einiger Zeit hänge ich an einem Problem das ich kenne und auch weiß woran es liegt, nur komm ich net drauf wie man es lösen könnte
Kurz zum Projekt. In unserer Firma stehen mehrere Server die Maschinen steuern.. Unabdingbar ist es immer den Status und andere Informationen zu überwachen und zu verarbeiten von einem Zentral-Server aus.
Also habe ich eine TCP Server Software programmiert die auf der Zentral-Server läuft und die die Client-Verbdinungen der einzelnen Server annimmt und die Basis- und Maschineninformationen sendet. Alle Server werden mir in der ListBox aufgelistet und ich kann sie fein auswählen und die Informationen verarbeiten.
So weit alles 1000%
Nun das kleine Problem. Is der Zentral-Server nun nicht mehr erreichbar, durch Neustart-Gründe oder dergleichen, muss natürlich eine "Reconnect"-Methode greifen auf der Client-Seite. Auch das funktioniert einwandfrei..... Aber logischerweise is das ja eine Endlosschleife (Wenn er immer wieder versucht sich zu verbinden).... Logisch das ein System.StackOverflowException entsteht, dieser kann ja auch nicht im Try-Catch abgefangen werden.
ich poste mal kurz die Clientseite Verbindungsmethode und die Reconnectmethode
Verbinden-Sub:
und hier die Reconnect-Sub:
Gibt es überhaupt eine möglichkeit die Exception zu "umgehen" oder gar einen ganz anderen Lösungsweg?
LG
seit einiger Zeit hänge ich an einem Problem das ich kenne und auch weiß woran es liegt, nur komm ich net drauf wie man es lösen könnte
Kurz zum Projekt. In unserer Firma stehen mehrere Server die Maschinen steuern.. Unabdingbar ist es immer den Status und andere Informationen zu überwachen und zu verarbeiten von einem Zentral-Server aus.
Also habe ich eine TCP Server Software programmiert die auf der Zentral-Server läuft und die die Client-Verbdinungen der einzelnen Server annimmt und die Basis- und Maschineninformationen sendet. Alle Server werden mir in der ListBox aufgelistet und ich kann sie fein auswählen und die Informationen verarbeiten.
So weit alles 1000%
Nun das kleine Problem. Is der Zentral-Server nun nicht mehr erreichbar, durch Neustart-Gründe oder dergleichen, muss natürlich eine "Reconnect"-Methode greifen auf der Client-Seite. Auch das funktioniert einwandfrei..... Aber logischerweise is das ja eine Endlosschleife (Wenn er immer wieder versucht sich zu verbinden).... Logisch das ein System.StackOverflowException entsteht, dieser kann ja auch nicht im Try-Catch abgefangen werden.
ich poste mal kurz die Clientseite Verbindungsmethode und die Reconnectmethode
Verbinden-Sub:
VB.NET-Quellcode
- Private Sub MaschineVerbinden()
- Try
- Me.MaschinenClient= New TcpClient
- Me.MaschinenClient.Connect(IPAdresse, Port)
- If Me.MaschinenClient.Connected = True Then
- Me.stReader = New StreamReader(Me.MaschinenClient.GetStream)
- Me.stWriter = New StreamWriter(Me.MaschinenClient.GetStream)
- Me.SendeMaschinenStatus() 'Maschinenstatus senden
- Dim thEmpfangen As New Thread(AddressOf EmpfangeInformationen) 'Befehle des Zentralservers entgegennehmen
- thEmpfangen.IsBackground = True
- thEmpfangen.Start()
- Else
- Reconnect()
- End If
- Catch ex As Exception
- Me.MaschinenClient.Close()
- Reconnect()
- End Try
- End Sub
und hier die Reconnect-Sub:
Gibt es überhaupt eine möglichkeit die Exception zu "umgehen" oder gar einen ganz anderen Lösungsweg?
LG