Есть ли что-то в рамках, которое позволит мне асинхронно выполнять очередь делегатов?Действия в очереди/делегаты для асинхронного выполнения
Что я имею в виду? Я хочу, чтобы делегаты выполняли один за раз в том порядке, в котором они поставлены в очередь, но я хочу, чтобы весь этот процесс выполнялся асинхронно. Очередь также не фиксирована, дополнительные делегаты будут добавляться периодически и должны быть обработаны, как только она достигнет вершины очереди.
В частности, мне не нужно использовать Queue
, это как раз то, как я описал бы желаемое поведение.
Я мог бы написать что-то сам, чтобы сделать это, но если есть что-то встроенное, я мог бы использовать вместо этого, что было бы лучше.
Я кратко рассмотрел ThreadPool.QueueUserWorkItem
, так как он позволяет выполнять заказ, но может найти удовлетворительный способ предотвратить более одного исполнения за раз.
Какую часть точности должна быть асинхронным? очереди? или сами действия должны быть асинхронными? – i3arnon
@ I3arnon Извините, должно было сделать это ясно, действия должны выполняться асинхронно, действие очереди должно выполняться синхронно или порядок может быть изменен, хотя это не является существенным. – Ashigore
@ I3arnon Я даже не уверен, что это понятно. Я имею в виду, что действие очереди должно блокироваться до тех пор, пока действие не будет поставлено в очередь. После этого все должно произойти в другом потоке, включая выполнение действий. Но мне все же нужно, чтобы они выполняли по одному. – Ashigore