我有一個可以從不同線程訪問的靜態隊列。這些枚舉/開始枚舉隊列嗎?
Queue有一個包裝器,它可以在add/remove/set上正確鎖定。 也有一種方法,我鎖定並返回Queue的副本,但這會產生一個新的枚舉,這有點浪費,所以我只想在必要時調用它。
我不想無謂地複製隊列,但枚舉它可以拋出一個異常,如果隊列被改變,而我在列舉上。
有沒有機會,這些拋出一個異常,而枚舉(因爲原因當然以上):
QueueWrapper.InnerQueue.Any()
(清空任何)QueueWrapper.InnerQueue.FirstOrDefault(o => o.Something)
QueueWrapper.InnerQueue.Except(element)
我應該在哪裏將QueueWrapper.InnerQueue
替換爲QueueWrapper.GetQueueCopy()
?
我不確定如何回答這個問題,但僅供參考,在.NET中有一個併發隊列可用:http://msdn.microsoft.com/fr-fr/library/vstudio/dd267265.aspx – C4stor
* C4stor *是正確的:如果你可以使用**內置實現**可以大大簡化事情。 – Pragmateek