Hi!
Die Lösung ist - wie auch in Java oder sonstwo - z.B. Multithreading.
In einer typischen .NET Windows Forms Anwendung gibt es einen Thread, der sich um die Aktualisierung der Oberfläche kümmert. Wenn Du dann z.B. in der Ereignisbehandlungsroutine eines Knopfes länger dauernde Aktionen durchführst, dann wird die Oberfläche so lange nicht reagieren, bis die Ereignisbehandlungsroutine fertig ist.
Wenn es Dir aber auch während solcher Zeiten um ein reagierendes GUI geht, dann könntest Du z.B. die Aktion in einem eigenen Thread ablaufen lassen. Das Aufsetzen des Threads selber ist schnell passiert (und unter .NET auch nicht mehr wirklich schwer, schau’ mal in der Online-Hilfe zum Thema ThreadPool nach) und die GUI bleibt aktiv, während der andere Thread werkelt.
Der einzige kleine Stolperstein ist noch die Aktualisierung von Controls aus einem anderen Thread heraus, wobei man dann über Invoke() (bzw. BeginInvoke() u.ä.) arbeiten muss.
Eine andere Möglichkeit, wenn Du z.B. in einer längeren Schleife etwas machst, wäre der Aufruf an Application.DoEvents(). Damit werden alle noch in der Nachrichtenwarteschlange sthenden Nachrichten abgearbeitet (z.B. Zeichenbefehle, aber auch Behandlung von Mausklicks) und die Oberfläche erscheint ebenfalls noch zu reagieren. Dann sollte man aber darauf achten, dass auch nur die Controls aktiviert sind, die auch tatsächlich auch während der Durchführung der länger dauernden Aktion bedient werden sollen.
Martin