Fenster friert beim Verbinden ein!

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Cheffboss.

    Fenster friert beim Verbinden ein!

    Hallo!
    Ich programmiere gerade ein einer TCP-Anwendung.
    Ich möchte das, das Programm alle paar Sekunden versucht sich zu automatisch zu verbinden!
    Wenn ich dies Manuell mache, also auf den Button1 klicke, diese dann die Sub aufrufe, geht es problemlos!
    Ich versuche nun mit einem Timer1 alle paar Sekunden die Sub Verbinden aufzurufen.
    Genau da liegt das Problem!
    Hier hängt sich das Fenster auf.
    Ich habe schon mit Threads gearbeitet und mit Backgroundworker1 und DoEvents.
    Leider alles ohne Erfolg!
    Wie kann ich das Problem am besten lösen?
    Vielen Dank.

    Hier das Problem:

    VB.NET-Quellcode

    1. TCPClientz = New Sockets.TcpClient(host, port)



    Die Sub wird ausgeführt für das Verbinden:

    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
    2. Verbinden("192.168.1.113", 1000)
    3. End Sub
    Bilder
    • socket.png

      17,84 kB, 773×354, 154 mal angesehen
    Visual Basic.NET 8o
    MS-SQL
    8o
    Probiere mal das ganze in einem Thread laufen zu lassen statt dem Timer

    VB.NET-Quellcode

    1. Imports System.Threading
    2. Public Class Bla
    3. Delegate Sub Connecter(ByVal Host as String, ByVal Port as Integer)
    4. Private Sub verbinde()
    5. Dim connection as new Connecter()
    6. connection = AddressOf Verbinden
    7. connection.Invoke("192.168.1.113", 1000)
    8. End Sub
    9. Sub Main()
    10. Dim connectthread as new Thread(AddressOf verbinde)
    11. connectthread.isBackground = true
    12. connectthread.start
    13. End Sub
    14. End Class


    Habs mal so aus dem Kopf geschrieben, falls es nicht funzt, prüfe ich es nochmal nach
    Dann bei mir einfach eine Schleife hinzufügen..?

    VB.NET-Quellcode

    1. Private Sub verbinde()
    2. Dim connection as new Connecter()
    3. connection = AddressOf Verbinden
    4. While true
    5. connection.Invoke("192.168.1.113", 1000)
    6. Thread.Sleep(Wert in Sekunden)
    7. End While
    8. End Sub


    Möchte man die Verbindungsversuche beenden, connectthread.abort aufrufen..