objQ.Monitor()
' Do other work here
objQ.Finish()
在初始化一个新的对象,并且传送它监听的机器名和队列,工作项目的数字就被设置好,并且调用Monitor方法。其后,客户端可以调用Finish方法来清除工作线程(可带超时参数)。
这个例子向你解释了如何使用ThreadPool类,不过它当然不是创建线程池以执行监视消息队列的唯一方法。例如,可以很容易地修改QueueListener来创建和跟踪类中的Thread对象数组,以实现线程池。接着Finish方法在设置mFinished标志后,就可以执行一个循环来监视IsAlive&&属性,以决定线程池何时耗尽,这时就无需使用ManualResetEvent对象了。此外,上面提到TLS技巧可以用来传送状态信息给线程。这个体系可让你更好地控制线程,实际上,当runtinme管理的线程已经很繁重或者需要更多的工作项目时,这个方法将是更好的。