Freigeben über


Threading in .NET Compact Framework

Aktualisiert: November 2007

Von .NET Compact Framework wird zwar die Threadingfunktion unterstützt, jedoch nicht die folgenden Features des vollständigen .NET Framework:

  • Zugriff auf den komprimierten Stapel auf dem aktuellen Thread

  • Die verwaltete Darstellung der Win32-OVERLAPPED-Struktur

  • Klassen, die den Ausführungskontext verwalten

  • Verwenden von Semaphoren

  • Threadzustand-Attribute

  • Die meisten Wait-Handlevorgänge bis auf das Abrufen des Handles

In .NET Compact Framework kann der ThreadStart-Delegat zusammen mit der Thread.Start-Methode und der TimerCallback-Delegat mit einem Timer verwendet werden.

Timeoutparameter können mit den folgenden Threadingmethoden angeben werden:

Änderungen in Threadpools

In .NET Compact Framework Version 1.0 ist die maximale Anzahl von Threads pro Threadpool standardmäßig auf 256 Threads mit einer Stapelgröße von 64 KB festgelegt. In .NET Compact Framework Version 2.0 und höheren Versionen wurde diese Begrenzung auf 25 Threads mit einer Stapelgröße von 128 KB gesenkt. Dies entspricht eher der Funktion des vollständigen .NET Framework.

Eine HTTP-Anforderung schlägt fehl und löst eine Ausnahme aus, wenn im Threadpool kein Thread verfügbar ist. In der folgenden Tabelle werden die in dieser Situation hauptsächlich zu erwartenden Ausnahmen dargestellt.

Ausnahme

Bedingung

OutOfMemoryException

Der Rückruf des Benutzers kann nicht in die Warteschlange eingereiht werden.

WebException

Der Threadpool enthält nicht genügend Threads, um den Vorgang abzuschließen.

Um zu verhindern, dass zu wenige Threads verfügbar sind, können Sie die Anzahl gleichzeitiger Webanforderungen reduzieren oder die Anzahl der maximal im Threadpool zulässigen Threads erhöhen. .NET Compact Framework 2.0 unterstützt die SetMaxThreads-Methode. Geben Sie deren Parameter an, wie in der folgenden Tabelle beschrieben.

Parameter

Beschreibung

workerThreads

Die maximale Anzahl von Arbeitsthreads im Threadpool. Dieser Wert ist beliebig.

completionPortThreads

Die maximale Anzahl asynchroner Threads im Threadpool. Dieser Wert wird von .NET Compact Framework derzeit ignoriert, er muss jedoch auf einen Wert zwischen 1 und 1000 festgelegt werden. Um Kompatibilität mit künftigen Versionen zu gewährleisten, wird ein Wert von 500 empfohlen, da dies der Standardwert für die Vollversion von .NET Framework ist.

Bei Geräten, die unter .NET Compact Framework 1.0 ausgeführt werden, können Sie die maximal zulässige Anzahl von Threads im Threadpool verringern, indem Sie eine Registrierungseinstellung ändern. Legen Sie MaxThreads im Schlüssel CFROOT\ThreadPool auf den gewünschten Wert fest. Beachten Sie, dass dieser Registrierungsschlüssel von höheren .NET Compact Framework-Versionen nicht verwendet wird.

Siehe auch

Referenz

System.Threading

Weitere Ressourcen

Anwendungsentwicklung in .NET Compact Framework