У меня есть несколько потоков, которые добавляют элементы в очередь без блокировки.
Затем элементы обрабатываются другим потоком.
В потоках производителя мне нужно запустить поток потребителя, , но только если он еще не запущен или не запущен .
В частности:
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.(