Announcement

Collapse
No announcement yet.

Form baut sich nicht richtig auf

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Form baut sich nicht richtig auf

    Hallo Community,

    ich habe folgendes Problem:

    Ich wollte zur Übung mal einen Chat Programmieren.

    Er ist in 2 Formulare aufgeteilt:
    Eins, was als StartFormular fungiert, dort kann man seinen Nickname, IP adresse und die IP des ChatPartners eingeben.
    Ein anderes, womit ich sozusagen Chatte. Es wird aufgerufen, wenn sich jemand Verbinden will oder wenn ich mich Verbinde mit jemanden.

    Nun das Problem: Das Formular 2, also das Chatfenster, lässt sich einwandfrei öffnen, wenn ich mich Verbinden will. Aber wenn eine Verbindung kommt, öffnet es sich und hängt sich auf, also nichts geht mehr. Keine label oder Buttons sind zu sehen.

    Hier der Code des Hauptformulars, da dort der Relevante Code vorhanden ist:

    Code:
    Public Class Hauptfenster
        Dim Nickname As String
        Dim EigeneIP As String
        Dim ThMessageEmpfDelegate As New Threading.ThreadStart(AddressOf standBy)
        Dim ThMessageEmpf As New Threading.Thread(ThMessageEmpfDelegate)
        Dim wartenServer As New clsSocketEmpfangen.clsSocketEmpfangen
        Dim startenServer As New clsSocketSenden.clsSocketSenden
    
        Private Sub btnVerbinden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVerbinden.Click
            If txtIP.Text = "" Then
                MsgBox("Du musst schon eine IP eingeben")
                Exit Sub
            End If
    
            Dim Chatfenster As New Chat
            startenServer.speichern(txtIP.Text, 15000)
            startenServer.senden(EigeneIP)
            startenServer.senden(Nickname)
            Chatfenster.starten(Nickname, txtIP.Text)
        End Sub
    
        Private Sub btnSpeichern_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSpeichern.Click
    
            If txtEigeneIP.Text = "" Then
                MsgBox("Deine IP findest du unter Start/Ausfuehren/cmd/ipconfig")
                Exit Sub
            End If
            EigeneIP = txtEigeneIP.Text
            Nickname = txtNickname.Text
            btnVerbinden.Enabled = True
            wartenServer.starten(15000)
            ThMessageEmpf.Start()
        End Sub
    
        Private Sub standBy()
            Dim client As String
            Dim Nickname_remote As String
            While (True)
    
                If wartenServer.server.pending() Then
                    Dim Chatfenster As New Chat
                    client = wartenServer.Empfangen()
                    Nickname_remote = wartenServer.Empfangen()
                    Chatfenster.starten(Nickname, client)
                    Chatfenster.Show()
                Else
                    Threading.Thread.Sleep(10)
                End If
            End While
    
        End Sub
    
        Private Sub Hauptfenster_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
            ThMessageEmpf.Abort()
        End Sub
    End Class
    In der Funktion Chatfenster.starten(Nickname, client) werden nur ein paar Variablen gesetzt.
    Der Code der anscheinend den Fehler enthält befindet sich in der Sub "standBy()"

    Wäre nett, wenn mir einer von euch helfen könnte

    mfg
    Hennieliminator

    ps.: Sprache ist VB.net
    Zuletzt editiert von Hennieliminator; 01.08.2007, 16:55. Reason: etwas vergessen

  • #2
    Hi,

    nur ein paar Fragen:

    hast Du die standby() schon Debugged?
    Wird der Aussprung aus der While Schleife erreicht, bzw. wird die Anweisung "chatfenster.Show" erreicht?
    Was ruft die standby() auf?
    Geht es im Code nach dem Aufruf der standby() weiter?
    Bricht der Debuggmodus nach einer gewissen Zeit nach dem Aufhängen ab?
    Ist die CPU Auslastung während des Aufhängens erhöht?

    M

    Comment


    • #3
      Hi,
      oben im Quelltext hatte ich noch eine falsche Zeile, die ich während des Debuggens reineditiert habe.

      es war die Zeile
      Code:
      exit While
      in dem Fall wie es mit der Zeile war, hat sich das Form nicht aufgehängt, sondern ist sofort wieder geschlossen worden. Die Zeile habe ich nun oben entfernt. (sie befand sich am ende der While-Schleife in der standBy())

      Die standBy wird in der Prozedur btnSpeichern_Click aufgerufen, indem ein neuer Thread geöffnet wird (ThMessageEmpf) und dieser Thread mit der Prozedur arbeitet.

      Ich denke mir, dass die While-Schleife weiter läuft. Ich kann das aber nicht genau sagen, da ich nicht weiß wie ich den zweiten Thread im Einzelschritt oder überhaupt Debuggen kann.

      -.-
      Beim schreiben ist mir grad der Fehler klar geworden. Ich habe die standBy() auf den anderen Thread ausgelagert, damit ich die Bedienung noch ordentlich hatte. Da hat sich das auch immer aufgehängt. Das Programm hat halt gewartet bis die While fertig war. Die While muss aber immer laufen. Halt für einen 2ten oder 3ten CHatpartner. Was mir nun nur noch unklar wäre, ist warum sich das Chatfenster wieder schließt wenn ich das Chatfenster öffne, und anschließend die While schleife beende. Ist es möglich, dass das Chatfenster in dem "Hauptthread" läuft? Also in dem das Programm selbst gestartet wurde?

      MfG
      Hennieliminator

      Comment

      Working...
      X