Вы можете проголосовать все, что вы хотите. У меня нет времени, чтобы сделать полный пример, чтобы вы могли копировать и вставлять и выполнять свою работу. Вы написали о Queue, я предположил, что вы использовали его для управления потоками, и я предложил вам взглянуть на класс ThreadPool, чтобы упростить вашу работу. В чем дело?!?

м коде есть несколько ситуаций, когда различные потоки могут создавать рабочие элементы, которые по разным причинам не должны выполняться параллельно. Я хотел бы убедиться, что работа выполняется FIFO, независимо от того, из какого потока она поступает. В Java я бы поставил рабочие элементы на однопоточныйExecutorService; есть ли эквивалент в C #? Я сделал что-то вместе сQueue и кучаlock(){} блоки, но было бы неплохо иметь возможность использовать что-то готовое и проверенное.

Обновить: Кто-нибудь имеет опыт работы с System.Threading.Tasks? Есть ли решение для такого рода вещей? Я пишу приложение Monotouch, чтобы кто-нибудь знал, смогу ли я найти его версию с бэкпортом, которую можно было бы приступить к работе, но об этом, по крайней мере, стоит подумать в будущем.

Обновление № 2 Для разработчиков на C #, незнакомых с библиотеками Java, о которых я говорю, в основном я хочу что-то, что позволяет различным потокам обрабатывать рабочие элементы так, чтобы все эти рабочие элементы выполнялись в одном потоке (который не является ни одним из вызывающих потоков) ,

Обновление, 6/2018: Если бы я проектировал подобную систему сейчас, я бы, вероятно, использовалРеактивные расширения согласноОтвет Мэтта Крейга, я ухожуОтвет Захария Йейтса принятый, хотя, потому что, если вы думаете на Rx, вы, вероятно, даже не зададите этот вопрос, и я думаю,ConcurrentQueue легче внедриться в программу pre-Rx.