C # equivalente para Java ExecutorService.newSingleThreadExecutor (), o: cómo serializar el acceso multiproceso a un recurso

Tengo un par de situaciones en mi código donde varios subprocesos pueden crear elementos de trabajo que, por varias razones, no deben hacerse en paralelo. Me gustaría asegurarme de que el trabajo se realiza de manera FIFO, independientemente del hilo del que provenga. En Java, pondría los elementos de trabajo en un solo subprocesoExecutorService; ¿hay un equivalente en C #? He improvisado algo junto con unQueue y un montón delock(){} bloques, pero sería bueno poder usar algo listo para usar y probado.

Actualizar: ¿Alguien tiene experiencia con System.Threading.Tasks? ¿Tiene una solución para este tipo de cosas? Estoy escribiendo una aplicación Monotouch, así que quién sabe si podría encontrar una versión con respaldo que pueda ponerme a trabajar, pero al menos sería algo en lo que pensar en el futuro.

Actualización n. ° 2 Para los desarrolladores de C # que no están familiarizados con las bibliotecas Java de las que estoy hablando, básicamente quiero algo que permita que varios hilos entreguen elementos de trabajo de manera que todos esos elementos de trabajo se ejecuten en un solo hilo (que no es ninguno de los hilos de llamada) .

Actualización, 6/2018: Si estuviera diseñando un sistema similar ahora, probablemente usaríaExtensiones Reactivas según porLa respuesta de Matt Craig. me voyLa respuesta de Zachary Yates el aceptado, sin embargo, porque si estás pensando en Rx probablemente ni siquiera harías esta pregunta, y creoConcurrentQueue es más fácil incorporar a un programa pre-Rx.

Respuestas a la pregunta(5)

Su respuesta a la pregunta