मूल रूप से मैं एक MSMQ दर्पण हैं चाहते हैं, लेकिन, स्मृति में किया जाएगा, क्योंकि यह एक प्रक्रिया में इस्तेमाल किया जा रहा है डेटा संरचना। एमएसएमक्यू का मिरर करके मेरा मतलब है कि आप ऑब्जेक्ट्स को एनक्यू करेंगे, फिर आप या तो ऑब्जेक्ट को डिस्क्वाय कर सकते हैं या एक कुंजी का उपयोग करके उन्हें पुनर्प्राप्त कर सकते हैं। यहां मुझे प्रारंभिक प्रयास है। इस प्रयास के साथ मेरी मुख्य समस्या यह है कि आईडी द्वारा प्राप्त अक्सर उपयोग किया जाएगा और इसलिए कतार में बहुत सारी "मृत" वस्तुएं समाप्त हो जाएंगी।मैं क्यूई डिक्शनरी, सी # में कतार और शब्दकोश का संयोजन कैसे कार्यान्वित करूं?
public class QueueDictionary<TKey, TValue>
{
private readonly Queue _queue = new Queue();
private readonly Dictionary<TKey, TValue> _dictionary = new Dictionary<TKey, TValue>();
private readonly object _syncRoot = new object();
public TValue Dequeue()
{
lock (_syncRoot)
{
TKey key = (TKey)_queue.Dequeue();
while (!_dictionary.ContainsKey(key))
key = (TKey)_queue.Dequeue();
return _dictionary[key];
}
}
public TValue Get(TKey key)
{
lock (_syncRoot)
{
TValue result = _dictionary[key];
_dictionary.Remove(key);
return result;
}
}
public void Enqueue(TKey key, TValue value)
{
lock (_syncRoot)
{
_dictionary.Add(key, value);
_queue.Enqueue(key);
}
}
}
"कतार का एक बहुत हो रही हो जाएंगे" मृत "यह में वस्तुओं" - तो यह एक कतार के बहुत .... –
क्यों आप "मृत" वस्तुओं मिलेगा हो सकता है? आप * दूर करने के लिए * 'Get' में कुछ भी ... और अगर आप को धोखा दे नहीं कर रहे हैं * कि *, आप' while' पाश ... जो btw शायद ही रक्षा करनी चाहिए की जरूरत नहीं हैं नहीं है एक खाली कतार –
@Marc - मुझे लगता है कि ओपी विधि वह है जो ओपी मदद के लिए पूछ रही है क्योंकि आप कतार से मनमानी आइटम को नहीं हटा सकते हैं। – Josh