vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Warum 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!
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Warum kommt hier die ObjectDisposed Exception?3.431DomiS06.02.06 09:03
Re: Warum kommt hier die ObjectDisposed Exception?1.533Moderatorralf_oop06.02.06 13:03
Re: Warum kommt hier die ObjectDisposed Exception?1.563DomiS07.02.06 10:20

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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