Start Form2 im Thread

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Semiconductor.

    Start Form2 im Thread

    Hi Leute :)

    Ich bin auf eine Exception gestoßen, will sie analysieren und interpretieren können, doch kann ich nicht herausfinden, wieso es zu einer Exception führt:

    In einer Schleife eines Threads aus Form1 wird folgendes ausgeführt:

    VB.NET-Quellcode

    1. ...
    2. Invoke(Sub() Form2.Show())
    3. (hier soll es weitermachen)
    4. Dim test as string = Form2.ergebnis
    5. ....


    Form2 hat einfache Formulare und schließt sich selbst mittels eines Buttons:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Me.Dispose()
    3. End Sub


    Soweit funktioniert es halbwegs, nach drei Schleifen friert das gesamte Programm ein und nichts passiert.

    Das erscheint dann als Exception:

    Ausnahme ausgelöst: "System.UriFormatException" in System.dll
    Ausnahme ausgelöst: "System.Reflection.TargetInvocationException" in mscorlib.dll

    MfG
    Sala
    Dialoge: Instanziierung von Forms und Aufruf von Dialogen
    Außerdem, was hast Du vor?

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Die genannten Exceptions kenne ich nicht, aber ich weiß, dass es nie funktioniert, wenn man ein Form in einem NebenThread erstellt.

    Egal, was du anstellst - das wird nicht funktionieren.

    Auch wie der Fehler auftritt deutet auf Threading-Problematik hin: Nämlich dasses halbwegs funktioniert, aber dann doch failt, und iwie scheints mehrere Exceptions gleichzeitig zu geben, bzw. mal die eine, mal die andere.
    @EDR Jou.
    @Semiconductor Alles GUI-Geschehen eines Programmes erfolgt im Main-Thread. Wenn Du in einem anderen Thread Berechnungen anstellst und die Ergebnisse wie auch immer anzeigen willst, musst Du in den Main-Thread invoken.
    Die UriFormatException solltest Du in einem neuen kleinen Projekt untersuchen, wo Du nur diesem Effekt nachgehst, nix weiter und schon gar nicht in einem anderen Thread.
    Wenn diese dann behoben ist, widme Dich der TargetInvocationException. Sie deutet darauf hin, dass nicht oder falsch invoked wurde, so genau kenne ich die auch nicht.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!