官方文檔
為實現?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();?