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