我有多个线程将项目添加到无锁队列.
然后这些项目被另一个线程处理.
然后这些项目被另一个线程处理.
在制作人员线程中,我需要启动消费者线程,但只有当它没有运行或启动时才会启动.
特别:
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.