vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 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

Visual-Basic Einsteiger
Multithreading Problem 
Autor: duckhunter
Datum: 12.05.06 08:24

Hi Leute,

Hab schon wieder ein kleines Problem .
Ich will einen kleinen TCP Server machen. Das Problem ist nur, er gibt immer einen Fehler aus und ich weiß nicht warum. Ich hab das jetzt mit grafischer Oberfläche. Ich glaube (da ich ein Konsolenprogramm mit ähnlichen Code habe), wenn ich das mit Konsolenoberfläche machen würde, hätte ich kein Problem.

Folgender Fehler tritt auf: "Beim Vorgang zum Rückgängigmachen wurde ein Kontext gefunden, der sich vom Kontext des entsprechenden Set-Vorgangs unterschied. Möglicherweise war der Kontext für den Thread "Set" und wurde nicht zurückgesetzt (rückgängig gemacht)."

Private Shared Listen_Server As Socket   
Private Shared Connection_Server As Socket    
Private Shared receivebuffer(511) As Byte    
Private Shared allDone As New ManualResetEvent(False)     
Private Shared Sub StartServer()        
If Form1.tb_localport.Text <> "" Then           
 'StatusBar1.Text = "Waiting For connection"            
MsgBox("Waiting For connection")       
     Form1.bt_listen.Enabled = False         
   Form1.bt_disconnect.Enabled = True    
        Listen_Server = New Socket(AddressFamily.InterNetwork, _            _
          SocketType.Stream, ProtocolType.Tcp)    
        Dim localEP As New IPEndPoint(IPAddress.Any, Val( _
        Form1.tb_localport.Text))       
     Try              
  Listen_Server.Bind(localEP) 'IP-Adresse und Port binden     
       Catch ex As Exception      
          'statusbar1.Text = "ERROR On binding socket"          
      MsgBox("ERROR On binding socket")  
          End Try            
Try             
   Listen_Server.Listen(100) 'Listen-Server starten  
          Catch ex As Exception          
      closeconnections()             
   'statusbar1.Text = "ERROR On Start Listening"      
          MsgBox("ERROR On Start Listening")     
       End Try    
        While True          
      allDone.Reset()          
      Listen_Server.BeginAccept(AddressOf callback_accept, Listen_Server)           
     allDone.WaitOne()        
    End While       
 End If   
 End Sub   
  Public Shared Sub callback_accept(ByVal ar As IAsyncResult)     
   'statusbar1.Text = "connected"   
     MsgBox("connected")     
   Form1.bt_senddata.Enabled = True        
Application.DoEvents()      
  Try           
 Connection_Server = Listen_Server.EndAccept(ar)     
  Connection_Server.BeginReceive(receivebuffer, 0, 512, SocketFlags.None, _     _
           New AsyncCallback(AddressOf callback_readdata), Connection_Server)     
       allDone.Set()        
Catch ex As Exception 
           'statusbar1.Text = "no connection"      
      MsgBox("no connection")     
   End Try    
End Sub
Dieser Fehler tritt bei "allDone.WaitOne()" auf.
Der Fehler tritt auch auf, wenn ich "allDone.WaitOne()" und "allDone.Reset()" mit "DoEvents()" ersetze und "allDone.Set()" lösche.

Ich hab bei den obigen Code den Befehl "Shared" dabei. Aber auch ohne diesen geht das nicht

Keine Ahnung wo hier wieder der Fehler ist.

Danke für Eure Hilfe im Voraus.

mfg
duckhunter
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Multithreading Problem514duckhunter12.05.06 08:24
Re: Multithreading Problem297duckhunter12.05.06 08:29

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