eigene ImageChooser-Komponente funktioniert nur alleine - BackgroundWirker!
-
STRG + ALT + E und da das gewünschte Anhaken.
OutOfMemoryExceptions
Ich setze in der Endanwendungssoftware (letzte Schicht) auch gern mal ein TryCatch Block. Aber wenn man nur eine OutOfMemoryExceptions fangen möchte dann sollte man das auch tun. (Das Risiko eines TryCatch hat Looks ja bereits erläutert. Man schadet sich damit i.d.R. mehr als man nutzen zieht.)
catch(OutOfMemoryExceptions ex){}
danach verbleibt der Debugger ständig in
Heißt er hängt da oder er springt da immer wieder rein ?! (Beachte: wenn Dein Debugger das Programmfenster verdeckt und Du dann vom Debugger zum Fenster wechselst, alles neu gezeichnet werden muss.)
-
Ich habe nun alle Exceptions aktiviert aber es ist keine aufgetreten; ausser beim Start des Programes eine IndexOutOfRange-Exception da ich keine Kommandozeilenargumente angegeben habe (normal wenn das Programm gestartet wird ohne gleich eine Datei zum öffnen anzugeben).
Sehr eigenartig! Der Debugger bleibt in der Paint-Methode, aber ohne dass ich zum Programmfenster wechselte. Glaube aber nicht dass dies wirklich mit dem Problem zu TUn hat.
Der BackgroundWorker funktioniert normalerweise ja schon in Fenstern die mit ShowDialog() aufgerufen wurden!? Mir kommt es so vor als wäre das ein Problem.
-
Wenn er da hängt und es nicht weiter geht kann es auch einfach ein Deadlock sein. Lässt sich so schwer sagen. Kapsel mal die UI Zugriffe ordentlich weg und achte auf Deadlocks.
-
Vielen Dank, ja das könnte ich mir noch vorstellen; solche Deadlocks sind ja schwierig zu finden wenn sie innerhalb von Funktionen des Frameworks auftreten. Aber würde das Programm noch reagieren bei einem Deadlock? Der Abbrechen-Button funktioniert bzw. das Fenster kann ich schliessen und die Anwendung funktioniert dann normal weiter.
-
Jain, das hängt davon ab ob der GUI Thread am Deadlock beteiligt ist. Wenn ja reagiert garnichts mehr. Was bei Dir klemmt lässt sich so aber nicht sagen. IMHO sind die Informationen rund um zu wenig.
-
Hmm es muss kein GUI-Thread beteiligt sein, da die Fenster jeweils ja reagieren.
Habe nichts weiter herausfinden können. Hier wäre mal der gesamte Quellcode: http://rebenstudio-it.ch/QuellcodenetBildbearbeitungsprogramm.zip
-
Trag einfach die Methode backgroundWorker1_DoWork im Backgroundworker ein und schon wird die Methode auch aufgerufen.
-
mmmh so einfach. Die müssen beim einfügen des Fensters in das Projekt rausgefallen sein. Und das habe ich doch nicht angeschat. Danke
Weisst Du (oder sonst jemand) da zufällig gleich wie ich beim "umwandeln in 256 Farben" Dithering mit einbeziehen kann? Es wird zwar durch den OctreeQuantizer eine gute Palette erzeugt, aber da keine Fehlerstreuung eingesetzt wird sehen die Bilder etwas wie Gemälde aus...
-
Nein, aber es wäre eine gute Idee einen neuen Thread zu eröffnen. Eventuell sogar im "Spiele und Grafikforum" . Mag dann zwar nicht gleich in C# enden, aber wertvoll könnten die Tips sein.
-
Habe ich getan
Vielen Dank