Thread dans le .NET Compact Framework
Mise à jour : novembre 2007
Le .NET Compact Framework prend en charge les fonctionnalités de threading principales, mais pas les fonctionnalités suivantes dans le .NET Framework complet :
Accès à la pile compressée sur le thread actuel.
Représentation managée de la structure OVERLAPPED Win32.
Classes qui gèrent le contexte d'exécution.
Utilisation de sémaphores.
Attributs d'état de thread.
Majorité des opérations de handle d'attente à l'exception de l'obtention du handle.
Le .NET Compact Framework prend en charge l'utilisation du délégué ThreadStart avec la méthode Thread.Start et l'utilisation du délégué TimerCallback avec Timer.
Vous pouvez spécifier des paramètres de délai d'attente à l'aide des méthodes de threading suivantes :
Méthode WaitOne(Int32, Boolean) d'un WaitHandle.
Méthode Join(Int32) d'un Thread.
Modifications dans les pools de threads
Dans le .NET Compact Framework version 1.0, le nombre maximal de threads par défaut dans un pool de threads est 256 threads avec une taille de pile de 64 KB. Dans le .NET Compact Framework version 2.0 et versions ultérieures, cette limite est réduite à un maximum de 25 threads avec une taille de pile de 128 KB, ce qui correspond mieux à la fonctionnalité du .NET Framework complet.
Une demande HTTP échouera et lèvera une exception si aucun thread n'est disponible dans le pool de threads. Le tableau suivant répertorie les principales exceptions dans cette situation.
Exception |
Condition |
---|---|
Impossible de mettre en file d'attente le rappel de l'utilisateur. |
|
Nombre insuffisant de threads dans le pool de threads pour terminer l'opération. |
Vous pouvez éviter de manquer de threads en réduisant le nombre de demandes Web simultanées ou en augmentant le nombre maximal autorisé des threads dans le pool de threads. Le .NET Compact Framework 2.0 prend en charge la méthode SetMaxThreads. Spécifiez ses paramètres comme décrit dans le tableau suivant.
Paramètre |
Description |
---|---|
workerThreads |
Nombre maximal de threads de travail dans le pool de threads. Il peut s'agir de n'importe quelle valeur. |
completionPortThreads |
Nombre maximal de threads asynchrones dans le pool de threads. Le .NET Compact Framework ignore actuellement cette valeur, mais elle doit se situer entre 1 et 1 000. À des fins de compatibilité future, la valeur 500 est recommandée, car il s'agit de la valeur par défaut pour le .NET Framework complet. |
Pour les périphériques qui exécutent le .NET Compact Framework 1.0,, vous pouvez diminuer le nombre maximal autorisé des threads dans le pool de threads en modifiant un paramètre du Registre. Affectez la valeur désirée à MaxThreads dans la clé CFROOT\ThreadPool. Notez que cette clé de Registre n'est pas utilisée par les versions ultérieures de .NET Compact Framework.