Es ist einfacher zu verwalten bestimmte Kontrollen zu deaktivieren, indem Sie sie in einem Schaltschrank platzieren und diese Platte statt Sperren einzelne Steuerungen zu deaktivieren:
controlPanel.Enabled = false;
Ein üblicher Weg, andere Aufgaben zu blockieren, die Ihre Bedürfnisse erfüllen können, ist indem Sie ein Top-Formular mit einem Fortschrittsbalken anzeigen. Das habe ich in der Vergangenheit mit Erfolg umgesetzt. Andere Programme machen das Gleiche.Wenn zum Beispiel in WinRAR die Anwendung beschäftigt ist, Dateien zu extrahieren oder zu komprimieren, zeigt die Anwendung eine oberste Form an. Es sieht wie eine "modale" Form aus, aber tatsächlich können Sie immer noch auf die anderen Funktionen klicken, auf die WinRAR fragt: "Möchten Sie die aktuelle Operation abbrechen?"
Deaktivieren der gesamten Anwendung ist oft nicht notwendig und möglicherweise nicht intuitiv. Fragen Sie sich also, ob Sie wirklich die Interaktion mit dem Formular blockieren müssen. Zum Beispiel habe ich eine Anwendung, die einige Zeit braucht, um bestimmte Aufgaben zu erledigen. Ich biete einen Fortschrittsbalken für diese bestimmte Arbeit an, aber Sie können weiterhin mit der Anwendung interagieren, um zusätzliche Aufgaben zu starten, die gleichzeitig ausgeführt werden. Auch wenn Sie nur eine Aufgabe gleichzeitig ausführen dürfen, möchten Sie möglicherweise trotzdem die Hilfedatei anzeigen oder die Anwendungseinstellungen festlegen, während die Aufgabe ausgeführt wurde. Außerdem gebe ich dem Benutzer eine Schaltfläche, mit der er die Aufgabe stoppen kann. Durch das Deaktivieren des Formulars wird diese Art der Interaktion verhindert.
Wenn Sie das Formular deaktivieren und den Code in den Hintergrund verschieben, was bringt es, ihn in den Hintergrund zu verschieben? – JaredPar
Da ohne Hintergrundarbeiter Windows sagen wird, dass die Anwendung "nicht reagiert", wenn der Benutzer versucht, mit ihm zu interagieren. – Chris