Autor Beitrag
haschme
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57
Erhaltene Danke: 1



BeitragVerfasst: Mi 25.05.16 11:33 
Hallo zusammen,

ich habe eine Software für eine WinForm geschrieben, die bis jetzt fehlerlos funktionierte.
Nachdem der Code fertig war entschied ich mich aber, das ganze in einem Wizard darzustellen.

Da ich das Rad nicht neu erfinden wollte habe ich mich auf die Suche nach existierenden Controls begeben.

Dabei habe ich zunächst 2 Controls ausprobiert: aerowizard.codeplex.com/ und www.codeproject.com/...3298&fr=51#xx0xx

Schöner finde ich den AeroWizard.
Bei beiden Wizards habe ich jedoch das Problem, dass nach Vollendung des Algorithmus die Form automatisch geschlossen wird.

In meinem Code wird vor den Berechnungen ein Thread gestartet. Kann es vielleicht sein, dass der Wizard ebenfalls einen Thread ausführt, welcher meinem Thread in die Quere kommt?

Ich hoffe mir kann jemand helfen.

Vielen Dank!
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 25.05.16 13:57 
Welcher Algorithmus, wann wird der aufgerufen, wie hängt der mit dem Wizard zusammen und was ist der Fehler?
haschme Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57
Erhaltene Danke: 1



BeitragVerfasst: Mi 25.05.16 15:38 
Der Algorithmus ist völlig unabhängig von der Form bzw vom Wizard.

Der einzige Zusammenhang entsteht durch das vom Wizard ausgelöste Event: Finished
Dieses Event wird dann ausgelöst sobald der User auf der letzten Seite des Wizards ist und auf den Button Finish klickt.

Wenn das Event ausgelöst wird starte ich einen Thread in dem mein Algorithmus startet.

Leider schließt sich das Programm automatisch während des Vorgangs. Dies geschieht aber erst seit ich das Wizard Control eingebaut habe.
Vorher unter einer normalen WinForm lief alles normal durch.

Es sieht so aus, als würde das Event des Wizard´s einfach meine Form schließen. Ich verstehe allerdings nicht warum. Eine Fehlermeldung entsteht nicht.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4805
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 25.05.16 17:17 
Hallo,

ist das Wizard-Control auf der Hauptform drauf (d.h. welches du per Application.Run(...] gestartet hast)?
Dann ist klar, daß bei Beendigung der Form sich auch das ganze Programm beendet.

Du mußt entweder die Form selbst weiter geöffnet lassen oder aber per Application.Run() (d.h. ohne Parameter) oder sogar einen eigenen ApplicationContext dafür sorgen, daß das Programm weiterläuft.

Was soll denn visuell passieren, während dein Thread läuft?
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 25.05.16 17:24 
Wenn das sowieso nach dem Wizard passieren soll (finished heißt für mich danach) warum ist dann die Aufgabe überhaupt ein weitere Thread und wird nicht einfach danach so gestartet?

Wir müßen da ein wenig Code sehen um das wirklich zu durchschauen mir fallen da gerade ein halbes dutzend Stellschrauben ein (Application.Run, Forgroundthread vs. Backgroundthread, überhaupt Thread, Thread.Join, Synchronisierung etc. etc.) an denen man drehen könnte aber was genau bei dir das Richtige ist kann ich so aus'm lameng nicht sagen.