BlockingCollection<T> 类实现 列队操作

官方文档

为实现 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(); 

原文地址:https://www.cnblogs.com/z45281625/p/11045244.html