У меня есть несколько потоков, которые добавляют элементы в очередь без блокировки.
Затем элементы обрабатываются другим потоком.
В потоках производителей мне нужно запустить поток потребителей, но только если он еще не запущен или не стартовал.
В частности:
public void BeginInvoke(Action method)
{
//This runs on multiple background threads
pendingActions.Enqueue(method);
if (ProcessQueue hasn't been posted)
uiContext.Post(ProcessQueue, null);
}
private void ProcessQueue(object unused)
{
//This runs on the UI thread.
Action current;
while (pendingActions.TryDequeue(out current))
current();
}
Я использую .Net 3.5, а не 4.0.: (