Beim Öffnen der Sammlung muss ein Dialog angezeigt werden der einem darüber Informiert, dass gerade eine Sammlung geöffnet wird. Wichtig ist das, wenn das NAS gerade die Platte anfährt oder wenn es aus ist. Mit dem Dialog muss es auch Möglich sein die laufende Aktion unterbrechen zu können. Sollte das NAS aus sein damit man nicht Wochen lang warten muss. Ebenso sollte später das Reorganisieren/Optimieren und das Datenbank Upgrade über diesen Dialog laufen. Muss berücksichtigt werden. Die Operationen müssen dann natürlich alle in einem Thread ausgeführt werden.
Kommentare
ungefähre Klassenstruktur
Die Klassen sollte in etwa folgende Struktur besitzen:
Als Code könnte das in etwa dann wie folgt aussehen. Eventuell macht es aufgrund der Größe der Methode auch Sinn diese bewusst nicht als eine anonyme Methode zu konzipieren. Sondern als normale Methode. In dieser Methoden muss später auch die Entscheidung stattfinden ob eine Offline Datenbank geöffnet wird oder ob ein DB Upgrade stattfindet. Was natürlich auch in dieser Methode abgearbeitet werden muss. Das darf, dann aber nicht abgebrochen werden dürfen.
Beim Öffnen einer Datenbank
Beim Öffnen einer Datenbank erscheint jetzt immer ein modaler Dialog. Die Schaltfläche "Abbrechen" setzt zu erst ein Flag auf welches der Thread reagieren kann. Wenn er es nicht innerhalb von 1,5 Sekunden (Timer Event) getan hat wird er abgeschossen.
Fehlermeldungen aus Thread
Sollte wärend der Verarbeitung im Thread ein Problem auftretten (z.B.: Datenbankupgrade) so würde normal ein Dialog angezeigt. In diesem Fall hängt sich die Anwendung allerdings komplett auf. Das ist nicht sonderlich schön. Hier muss eine Lösung für gefunden. Genau so verhält es sich auch (oder vielleicht auch nur hier), wenn wärend dem Zeichnen in der ListView ein Fehler auftritt. Zu mindestens hängst sich die Anwendung dann auf, wenn eine MessageBox anzuzeigen versucht wird.
Vielleicht wäre es das Sinnvollste wenn das Logging-Modul alle Fehlermeldungen zusätzlich in einer seperaten Fehler XML Datei protokoliert und in der Statusleiste ein Symbol angezeigt wird (via Event). Bei einem Klick auf dieses Symbol wird die XML Datei geöffnet, was in der Regel mit dem aktuellen Browser geschehen sollte. Das Symbol sollte auch dezent blinken (oder pulsieren Alpha 30-100%) um zu verdeutlichen, dass dort etwas passiert ist.
Sollten Fehler auftreten wird
Sollten Fehler auftreten wird in jedem Fall ein ErrorLog.xml ( #115 - Logdatei muss nach AppData (Geschlossen) ) erstellt und der Benutzer darüber durch ein Icon in der Statusleiste darüber informiert. Klickt er darauf, dann wird die Anwendung gestartet mit der .xml verknüpft ist und der Status in der Statusleiste zurückgesetzt. Die Logdatei wird nicht zurückgesetzt.
Bei entsprechender Fehleranzahl kann diese Datei durchaus den Rest der Anwendung ausbremsen. Also an den Stellen an denen Fehler auftreten.
Statusänderung
Die Aufgabe wurde aufgrund von Inaktivität automatisch geschlossen.