为实现 IProducerConsumerCollection<T> 的线程安全集合提供阻塞和限制功能。
通过 BlockingCollection<T> 实现列队调用函数
建立全局变量
BlockingCollection<string> blockingCollection = new BlockingCollection<string>();
建立调用函数,用来向队列中添加信息。
void Do(string str){
if (blockingCollection.IsAddingCompleted)
{
return;
}
blockingCollection.Add(str); //添加队列信息
}
在需要调用的函数新建线程,并运行
void ThreadLog()
{
foreach (string value in blockingCollection.GetConsumingEnumerable())
{
AppLog(value); //执行需要调用的函数
}
blockingCollection.Dispose(); //关闭接受才会执行,微软要求释放资源
}
关闭接受
blockingCollection.CompleteAdding();