| |

VB.NET - FortgeschritteneWarum kommt hier die ObjectDisposed Exception? | |  | Autor: DomiS | Datum: 06.02.06 09:03 |
| Hallo,
beim 2. Aufruf meiner Methode StarteVerbindung() kommt folgende Fehlermeldung, und ich weiß nicht wieso!
Unbehandelte Ausnahme: System.ObjectDisposedException: Auf das verworfene Objekt
kann nicht zugegriffen werden.
Objektname: System.Net.Sockets.TcpClient.
bei System.Net.Sockets.TcpClient.Connect(String hostname, Int32 port)
Die Klasse um die es sich handelt ist folgende:
'/ Klasse VLM
Public Class VLM
'/ globale Variablen
Private _host As String
Private _port As String
Private _TcpClient As New System.Net.Sockets.TcpClient()
Private _NetStream As System.Net.Sockets.NetworkStream
Private _StreamWriter As System.IO.StreamWriter
Private _StreamReader As System.IO.StreamReader
'/ Konstruktor
Public Sub New(ByVal host As String, ByVal port As Integer)
'/ Verbindung herstellen
_host = host
_port = port
End Sub
'/ Function StarteMainStream
Public Sub StarteMainStream()
'/ Verbindung starten
StarteVerbindung()
'/ Stream-Instanz anlegen
System.Threading.Thread.Sleep(3000)
_StreamWriter.WriteLine("new mainstream broadcast")
...
'/ Verbindung beenden
BeendeVerbindung()
End Sub
'/ Function StarteMainAufnahme
Public Sub StarteMainAufnahme(ByVal name As String)
'/ Verbindung starten
StarteVerbindung()
'/ Aufnahme-Instanz anlegen
System.Threading.Thread.Sleep(3000)
_StreamWriter.WriteLine("new mainaufnahme broadcast")
...
'/ Verbindung beenden
BeendeVerbindung()
End Sub
'/ Sub BeendeMainAufnahme
Public Sub BeendeMainAufnahme()
'/ Verbindung starten
StarteVerbindung()
'/ Aufnahme anhalten und Job löschen
System.Threading.Thread.Sleep(3000)
_StreamWriter.WriteLine("control mainaufnahme stop")
System.Threading.Thread.Sleep(3000)
_StreamWriter.WriteLine("del mainaufnahme")
System.Threading.Thread.Sleep(3000)
_StreamWriter.WriteLine()
'/ Verbindung beenden
BeendeVerbindung()
End Sub
End Sub
'/ Sub StarteVerbindung
Private Sub StarteVerbindung()
'/ Socketverbindung zum RZSTREAM öffnen
_TcpClient.Connect(_host, _port)
'/ den Stream der Socketverbindung verwenden
_NetStream = _TcpClient.GetStream()
_StreamReader = New System.IO.StreamReader(_NetStream, _
System.Text.Encoding.ASCII)
_StreamWriter = New System.IO.StreamWriter(_NetStream, _
System.Text.Encoding.ASCII)
_StreamWriter.AutoFlush = True
'/ auf eine Antwort maximal so lange warten
_NetStream.ReadTimeout = 2000
'/ das Passwort übermitteln
_StreamWriter.WriteLine("admin")
'/ erste Zeile interessiert nicht --> weglesen
_StreamReader.ReadLine()
'/ Prüfen ob die Welconmemessage kommt, ansonsten Fehler
If Not _StreamReader.ReadLine().StartsWith("Welcome, Master") Then
Throw New Exception("RZSTREAM is answering but with wrong" & _
"welcomemessage.")
End If
End Sub
'/ Sub BeendeVerbindung
Private Sub BeendeVerbindung()
'/ Workaround für VLC-Bug!
System.Threading.Thread.Sleep(3000)
_StreamReader.ReadLine()
'/ Verbindung beenden
_TcpClient.Close()
End Sub
End Class Man sieht, dass StarteVerbindung() und BeendeVerbindung() von den anderen Methodem immer aufgerufen wird. Allerdings lässt sich immer nur eine Aktion durchführen, sonst kommt die Exception.
Also jede Methode einzeln aufgerufen funktioniert, wenn ich jedoch in meiner einen instanziierten Klasse VLM das zweite mal eine Methode aufrufe, die selbst wiederrum StarteVerbindung() aufruft, dann kommt diese Exception! |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
Neu! sevPopUp 2.0 
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere InfosTipp des Monats Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|