Beispiel für eine Singlethread-Anwendung mit Berechnung mit langer Laufzeit

Aktualisiert: November 2007

In diesem Beispiel wird veranschaulicht, wie Sie verhindern, dass die Benutzeroberfläche aufgrund einer Singlethread-Anwendung nicht mehr reagiert, die einen lang andauernden Vorgang ausführt.

Dieses Beispiel umfasst eine Button. Wenn auf diese geklickt wird, beginnt eine Berechnung von Primzahlen. Diese Berechnung ist theoretisch unendlich. Wenn daher der Ereignishandler in einer Schleife ausgeführt wird und Primzahlen berechnet, wird der Aufruf nie zurückgegeben und der Benutzeroberfläche-Thread reagiert nicht mehr.

Um dies zu verhindern, wird im Beispiel ein asynchroner Auftrag im Dispatcher des Benutzeroberfläche-Threads in die Warteschlange gestellt, indem BeginInvoke aufgerufen wird. Der Auftrag in der Warteschlange verarbeitet eine Zahl, wenn sich der Benutzeroberfläche-Thread im SystemIdle-Zustand befindet, und sendet einen weiteren Aufruf an den Verteiler, um die nächste Zahl beim nächsten Leerlauf des Benutzeroberfläche-Threads zu verarbeiten.

So wird sichergestellt, dass der Benutzeroberfläche-Thread immer Priorität vor dem Berechnen der nächsten Zahl hat und die Benutzeroberfläche reagiert.

Eine Erläuterung dieses Beispiels finden Sie im Thema Threading-Modell.

In diesem Beispiel soll nur ein bestimmtes Feature von Windows Presentation Foundation veranschaulicht werden, daher werden die bewährten Methoden für die Anwendungsentwicklung nicht befolgt. Ausführliche Informationen über empfohlene Vorgehensweisen bei der Anwendungsentwicklung für Windows Presentation Foundation (WPF) und Microsoft .NET Framework finden Sie unter folgenden Themen:

Eingabehilfen – Bewährte Methoden für Eingabehilfen

Lokalisierung – Übersicht über WPF-Globalisierung und -Lokalisierung

Leistung – Optimieren der WPF-Anwendungsleistung

Sicherheit – Windows Presentation Foundation-Sicherheit

Download sample

Erstellen des Beispiels

  • Installieren Sie das Windows Software Development Kit (SDK) und öffnen Sie dessen Buildumgebungs-Befehlsfenster. Zeigen Sie im Startmenü auf Alle Programme und Microsoft Windows SDK, und klicken Sie dann auf CMD Shell.

  • Laden Sie das Beispiel, normalerweise aus der Software Development Kit (SDK)-Dokumentation, auf Ihre Festplatte herunter.

  • Um das Beispiel über das Buildumgebungs-Befehlsfenster zu erstellen, wechseln Sie zum Quellverzeichnis des Beispiels. Geben Sie an der Eingabeaufforderung MSBUILD ein.

  • Um das Beispiel mit in Microsoft Visual Studio zu erstellen, laden Sie die Projektmappe oder Projektdatei des Beispiels, und drücken Sie STRG+UMSCHALT+B.

Ausführen des Beispiels

  • Um das kompilierte Beispiel über das Buildumgebungs-Befehlsfenster auszuführen, führen Sie die EXE-Datei aus dem Ordner Bin\Debug oder Bin\Release, die unter dem Quellcodeordner des Beispiels enthalten sind, aus.

  • Um das kompilierte Beispiel in Visual Studio mit Debuggen auszuführen, drücken Sie F5.

Siehe auch

Aufgaben

Beispiel zu Wetterdienstsimulation über einen Verteiler

Beispiel für einen Multithreading-Webbrowser

Beispiel für das Deaktivieren der Befehlsquelle über den Systemzeitgeber

Konzepte

Threading-Modell