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:
Die WaitOne(Int32, Boolean)-Methode eines WaitHandle.
Die Join(Int32)-Methode eines Thread.
Ä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 |
---|---|
Der Rückruf des Benutzers kann nicht in die Warteschlange eingereiht werden. |
|
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.