2009-11-17 3 views
3

Malheureusement, il n'y a pas de sémaphore dans System.Threading lors de l'utilisation de .NET Compact Framework. Je ne sais pas pourquoi c'est, quelqu'un a une idée? Après avoir cherché sur Google, j'ai trouvé un groupe de personnes qui donnaient leurs propres implémentations, mais aucune d'entre elles ne marchait vraiment bien ... ou pas du tout!Sémaphores dans .NET compact framework

Je suis venu demander aux experts ...

Quelqu'un at-il une bonne classe sémaphores/bibliothèque, ils peuvent recommander pour le .NET Compact Framework ?

OU

est-il que je peux someway émuler le comportement?

J'ai une configuration de producteur/consommateur typique dans laquelle un thread pousse des objets sur une file d'attente (System.Collections). Je veux alors un thread consommateur pour retirer des objets de la file d'attente et travailler, mais évidemment seulement quand il y a des choses sur la file d'attente pour travailler avec!

Je travaille en C#, mais je vais prendre des solutions/pseudo dans n'importe quel langage tant que je peux l'implémenter sur .NET CF.

Répondre

4

Vous pouvez simplement PInvoke à CreateSemaphore et ReleaseSemaphore - ils sont implémentés sur CE dans coredll. Assez facile d'écrire un joli wrapper géré qui ressemble à System.Threading.Semaphore.

+0

Je me demandais si c'est la meilleure façon. Merci pour votre réponse – Fuzz

2

Je pense qu'il ya une mise en œuvre dans sémaphores OpenNETCF

+0

donc il y a .... :-) Je ne sais toujours pas pourquoi il n'a pas été inclus Bien sûr il y avait beaucoup manquant de .NET CF 1.0, mais nous sommes à la hauteur de 3.5 et toujours pas de sémaphore. Les sémaphores sont un dispositif de communication inter-processus assez fondamental. – Fuzz

+0

PARTEZ-MOI. M $ ne se soucient évidemment pas de CF ou prévoient de remplacer WinCE/CF avec quelque chose d'autre. C'est le seul raisonnement que je puisse proposer. L'argument de la taille du paquet est stupide car les périphériques ont plus d'espace ces jours-ci et ils pourraient toujours avoir une version "plus complète" ou libérer ce genre de bibliothèques en tant que modules complémentaires. – Quibblesome

+0

Je suis d'accord. La mucoviscidose a été grandement négligée. OpenNETCF est le meilleur. –

Questions connexes