Hallo Zusammen,
Ich habe nun meine Software fertig entwickelt und sie läuft auch einwandfrei. Nun möchte ich noch einige Schönheistmakel beseitigen. Darunter habe ich auch folgendes Problem:
Meine Software besteht aus einer Auswertung, die einige Zeit in Anspruch nimmt, da viele Artikel ausgewertet werden müssen. Dabei habe ich einen Progressbar, welcher den aktuellen Status anzeigt. Bis jetzt habe ich dabei auf eine Zwischenlösung zurückgegriffen, da ansonsten das Fenster bis zum Schluss der Auswertung nicht neu gezeichnet wurde und zwar mithilfe diese codes:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| private static System.Windows.Threading.DispatcherOperationCallback exitFrameCallback = new System.Windows.Threading.DispatcherOperationCallback(ExitFrame);
private static Object ExitFrame(Object state) { System.Windows.Threading.DispatcherFrame frame = state as System.Windows.Threading.DispatcherFrame;
frame.Continue = false; return null; }
public static void DoEvents() { System.Windows.Threading.DispatcherFrame nestedFrame = new System.Windows.Threading.DispatcherFrame();
System.Windows.Threading.DispatcherOperation exitOperation = System.Windows.Threading.Dispatcher.CurrentDispatcher.BeginInvoke( System.Windows.Threading.DispatcherPriority.Background, exitFrameCallback, nestedFrame);
System.Windows.Threading.Dispatcher.PushFrame(nestedFrame);
if (exitOperation.Status != System.Windows.Threading.DispatcherOperationStatus.Completed) { exitOperation.Abort(); } } |
Nun ist es zum Einten keine schöne Lösung und zum Anderen wirkt das Programm wie eingefroren, bis der nächste Artikel ausgewertet wird, denn dann wird erst das Fenster neu gezeichnet. Wie kann ich es lösen, dass jederzeit das Fenster angeklickt werden kann und dieses auch erscheint mit Statusanzeige?
Ich habe nun schon viel gelesen, nin aber noch ein Newbee und blicke langsam nicht mehr durch ob ich jetz backgroundworker oder Threading anwenden muss und wie ich am besten vorgehe...
Kann mir jemand helfen?