BlockingCollection 類實現 列隊操作


官方文檔

為實現 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(); 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM