2010-11-22 15 views
0

Ich bin derzeit ein Entwickler arbeitet an einer sehr aufgabenspezifischen Anwendung; Die Benutzer sind häufig Multitasking, so dass sie oft Fehler beim Eingeben von Daten machen können. Die Art der Aufgabe macht es wichtig, sie über diese Anführungsfehler zu informieren. Wir verwenden derzeit eine Kombination aus Panels und Etiketten und/oder einem kleinen Etikett am unteren Ende der Anwendung, um sie über etwas zu informieren. In naher Zukunft werden wir beauftragt werden, die Schnittstelle für die Anwendung zu aktualisieren.Nicht blockierende Messagebox & DllImport Nachteile

Vor kurzem beim Nachschlagen einer nicht verwandten Frage stieß ich auf die folgende Frage: click here for link die Antwort fiel mir ins Auge und die Einstellung des Besitzers Griff auf Null (null) tat in der Tat, was der Autor fragte.

Da ich erst vor kurzem begonnen Arbeiten mit dem Import und die Arbeit mit nicht verwalteten Code in C# ich mich gefragt, ob es irgendwelche waren „Nebenwirkungen“ der Verwendung dieser Methode. Mir ist natürlich klar, dass der Benutzer die Anwendung veranlassen könnte, eine Tonne Nachrichtenboxen zu öffnen. Ich habe in der Vergangenheit versucht, eine thread-sichere Message-Box zu verwenden, und festgestellt, dass die Anforderung unserer Anwendung, die immer oben war, ein Problem war (der Speicherort des Meldungsfelds wurde von der Anwendung ausgeblendet).

Ich war in der Lage zu nehmen, um den Code gegen die Anforderung zu testen, und es scheint ähnliche Probleme wie die Methode, die ich gefunden habe, aber scheint, wir könnten diese Probleme umgehen. Ich habe über etwas nachgedacht, was getan werden könnte, ich muss wirklich herausfinden, wie ich feststellen kann, wo auf dem Bildschirm das Meldungsfeld angezeigt wird.

Um Jim Bedenken ein, dass die Anwendung zu verstehen, hat zu adressieren, die kontinuierlich verarbeitet Daten ausgeführt wird. Daher kann derzeit alles, was den Hauptthread sperrt, zu Problemen bei der Verarbeitung dieser Daten führen, was eine wichtige Aufgabe ist. Wir umgehen dieses Problem mit Etiketten, aber mit unserer zukünftigen Aufgabe suche ich nach einem stromlinienförmigen Ansatz, um diese Fehlermeldungen zu präsentieren. Das Hauptproblem ist, dass die Lösung auch keinen zusätzlichen Overhead zur Anwendung haben muss. Einige zusätzliche Informationen sind, dass das System in einem geschlossenen Netzwerk verwendet wird.

Ich nehme an, die kurze Frage müsste sein, gibt es irgendwelche Nachteile der Verwendung dieser bestimmten Methode, um eine nicht blockierende Messagebox in C# zu zeigen?

+0

Bitte erklären Sie den Downvote, damit ich meine Frage verbessern kann. –

Antwort

3

Es gibt kein bestimmtes technisches Problem mit dem Anzeigen von modalen Meldungsfeldern, indem das Fensterhandle auf null setzt. Ich stelle seine Verwendung als eine UI-Fehlermeldung in Frage, weil es den Benutzer nicht daran hindert, angesichts eines Fehlers fortzufahren.

Modal Meldungsfelder, die der Benutzer auf OK getroffen machen und korrigieren dann der Fehler für ein furchtbar klobig Benutzeroberfläche machen. Aber ein Popup, das versteckt sein könnte und den Benutzer weitermachen lässt, ist genauso schlimm. Es gibt viel bessere Lösungen, von denen einige in den Validierungsbeispielen für Windows Forms (und vermutlich WPF) gezeigt werden.