我有一个队列,这基本上是生产者/消费者队列在albahari.com 穿线书,这需要一个队列项从队列,这是一个动作执行块从队列,然后调用到队列项内执行的ActionList的方法。

我可以通过一个入队空actionblock杀队列很轻松了,然后通过执行旋阻塞主线程/等待了Thread.sleep()方法,直到队列计数为零,并且所有的线程告吹的同时! = NULL循环,从而完成,但执行最后的ActionList的方法仍然可以执行最后线程。

的问题是,它们无论如何,以检测是否该方法仍然具有执行它,如可能使用信号量或计数器与联锁计数信号向上在方法的开始和结束时计数下来的线程。所以,如果它达到零,他们知道它没有螺纹。

这是实现该接口上的破坏方法,来调用dispose之前关闭它。

有帮助吗?

解决方案

如果你启动一个线程是这样的:

System.Threading.Thread mythread = new System.Threading.Thread();
mythread.Start();

可以检查:

mythread.IsAlive()

在任何点以确定其状态。

其他提示

使用具有完成事件BackgroundWorker的

在该方法中使用一个PostSharp属性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top