Programm beendet nicht vollständig

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Programm beendet nicht vollständig

    Guten Tag,
    ich bin noch relativer Anfänger und bastel grade an einem Webbrowser. Ich hab viele verschiedene Funktionen eingefügt (im Grunde ein Lernprojekt)
    und habe nun meine Probleme mit der tabcontroll.
    alles funktioniert perfekt, ich kann tabs hinzufügen und schließen, aber ich habe ein Problem ,welches ich schon vorher bei Projekten mit mehreren Forms hatte.
    wenn ich das Programm starte und in den f
    echsle und es dann schließe, beendet das Programm nicht korrekt (ich muss es im taskmanager manuell beenden)
    Das habe ich aber lösen können, indem ich in jeder Form beim form vlosing Event application.Exit
    eingetragen habe.
    Soweit so gut, aber jetzt mit den tabcontrolls tritt das Problem erneut auf, wenn ich nach programmstart 2 oder mehr Tabs hinzufüge unddann den Ursprünglichen und einen weiteren Tab lösche und das Programm beende
    wenn ich nur einen Tab hinzufüge und den ursprünglichen lösche gibt es kein Problem, aber wenn bei 2 oder mehr tabs der ursprüngliche nicht als letztes übrig bleibt bevor ich das Programm schließe, beendet das Programm nicht korrekt.
    Es scheint so als würde die Form meiner tabpages nur im Original korrekt beenden und die "Kopien" der
    Form nicht.
    Um das Problem zu lösen müsste ich mehr über den Aufbau der tabcontroll
    wissen.
    Hat jemand eine Idee, wie ich das lösen kann?
    ich weiss es ist nervig, wenn man das so lesen muss, aber ohne teile deines Codes wird es schwierig überhaupt nachzuvollziehen wo das Problem liegen könnte, geschweige denn dir die entsprechenden Antworten zu liefern
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Vermute mal, du schaffst unsauber und istanziierst dein Zeug nicht richtig. Aber ohne deinen Code wird es schwer zu helfen und wir fischen im trüben.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @IchIchIch Ich denke mal, da läuft noch der eine oder andere Thread.
    Sorge dafür, dass alle Threads aufhören zu arbeiten, wenn das Programm beendet wird.
    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!
    Danke dass ihr mir antwortet,
    @RodFromGermany
    ich hab grade bissl über threads gegoogelt.
    Ich habe manuell keine Threads gestartet, aber es würde mich nicht wundern, wenn die tabcontroll oder ein anderes Tool das automatisch verteilt (ist nur geraten)
    Wenn ich das jetzt richtig verstanden habe, kann ich im application closing event Threads.abort
    eingeben, oder?
    mir ist klar dass das jetzt nicht die perfekte lösung ist, aber ich will einfach irgendwie das Programm vernünftig zum laufen bringen

    IchIchIch schrieb:

    kann ich im application closing event Threads.abort eingeben
    So nicht, denn Du müsstest die explizite Instanz eines Threads killen, was unsauber ist, denn ein Thread soll sich selbst beenden, wenn die Arbeit getan ist.
    Hast Du einen BackgroundWorker am laufen? Auch das ist ein Thread.
    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!
    Nein ich habe nichts manuell gestartet (kein Thread, kein backroundworker)
    Das Problem tritt ja nur auf, wenn in der tabcontroll der ursprüngliche tab nicht als letzter vor dem beenden übrig bleibt, heißt wenn ein nachher zugefügter tab als letztes mit dem Programm beendet wird.
    es scheint so, als läge das Problem in einem dieser neu generierten tabs.
    diese müssten ja theoretisch identisch zu dem ursprünglichen tab sein,
    sind sie aber anscheinend doch nicht,
    oder verstehe ich da was falsch?

    IchIchIch schrieb:

    als läge das Problem in einem dieser neu generierten tabs.
    Kann ich mir nicht vorstellen.
    Kannst Du mal das bereinigte Projekt als Zip posten? (keine Verzeichnise bin und obj)
    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!
    Kannst Du bitte noch die passende Gecko-Dll nachliefern? Oder zumindest auf die von Dir genutzte Internetbezugsquelle verweisen?
    Nachdem ich den Gecko aus dem Terrarium Projekt entfernt hatte, blieb noch der unaufgelöste Verweise auf die Datei "Tab.vb". Keine Ahnung, ob die was wichtiges in dem Projekt darstellt.
    Das Projekt ist von Dir so eingestellt, dass das Programm sich beendet, wenn Form3 schließt (wär gut, wenn Du alles, inkl. die Formulare, sinnvoll benennst) Daher ist ein Form3_FormClosing => Application.Exit nicht notwendig. Und ohne Gecko kann ich auch wie wild Tabs erschaffen und schließen und das Projekt beendet sich trotzdem vollständig.

    btw: der Code in Form3_Load und TabHinzufügenToolStripMenuItem_Click ist moppelt gedoppelt bzw. quasi identisch und kann somit in eine eigene Sub. Stichwort DRY.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    tab.vb sollte da eigentlich auch nicht drinne sein
    Hb es i mir grade einfach aus dem projektmappen Explorer gelöscht und gut ist.
    Danke für deinen Tipp, ich habe den Standard Webbrowser eingesetzt und das Problem hat sich vollständig erledigt.
    ​scheint mit geckoFX zusammenzuhängen, was ich niemals gedacht hätte.
    ​Könntet ihr mir andere Engines empfehlen, bei denen ich dann testen kann, ob es besser funzt?
    ​webkit hab ich schon ausprobiert und awesomium bekomme ich nicht in die Toolbox, gibt es sonst noch engines, die man benutzen kann?
    ​Ansonsten danke ich euch allen herzlichst, dass ihr mir geholfen habt :)

    IchIchIch schrieb:

    tab.vb sollte da eigentlich auch nicht drinne sein
    Erstell ein Projekt, das Deinen Effekt reproduziert und das sich compilieren lässt und poste dies.
    Ich denke mal, es liegt am Gecko.
    Was sagt denn die Beschreibung von der Gecko-DLL, wie sie einzubinden und aufzurufen ist?
    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!