Équivalent C # pour Java ExecutorService.newSingleThreadExecutor (), ou: comment sérialiser l'accès mulithread à une ressource

J'ai un couple de situations dans mon code où plusieurs threads peuvent créer des éléments de travail qui, pour diverses raisons, ne devrait pas être fait en parallèle. J'aimerais assurez-vous que le travail s'effectue dans une FIFO façon, indépendamment de ce thread, il vient de. En Java, je l'avais mis les éléments de travail sur un seul thread ExecutorService; est-il un équivalent en C#? J'ai pavées quelque chose ensemble avec un Queue et un tas de lock(){} blocs, mais il serait agréable d'être en mesure d'utiliser quelque chose de hors-the-shelf et testé.

Mise à jour: quelqu'un a une expérience avec le Système.Le filetage.Tâches? A-t-elle une solution pour ce genre de chose? Je suis en train d'écrire un Monotouch app alors qui sait si je pourrais trouver une version rétroportés de ce que j'ai pu obtenir pour travailler, mais il aurait au moins quelque chose à penser pour l'avenir.

Mise à jour #2 Pour les développeurs C#, peu familiers avec les bibliothèques Java je parle, fondamentalement, je veux quelque chose qui permet à plusieurs fils à la main en arrêt de travail les éléments tels que tous les travaux seront exécutés sur un seul thread (ce qui n'est pas l'un de l'appel de threads).


Mise à jour, 6/2018: Si j'étais l'architecture d'un système similaire, maintenant, je serais probablement utiliser Réactif Extensions comme par Matt Craig répondre. Je pars Zachary Yates réponse l'a accepté, bien que, parce que si vous êtes en train de penser en Rx-vous ne serait probablement pas même de poser cette question, et je pense que ConcurrentQueue est plus facile de bodge dans un pre-Rx programme.

source d'informationauteur David Moles