public class SingletonQueue
{
private BlockingCollection<string> _queue;
private static SingletonQueue _instance;
private SingletonQueue()
{
_queue = new BlockingCollection<string>();
}
[MethodImpl(MethodImplOptions.Synchronized)]
public static SingletonQueue GetInstance()
{
return _instance ?? (_instance = new SingletonQueue());
}
public void AddToQueue(string s)
{
_queue.Add(s);
}
public string GetFromQueue()
{
return _queue.Take();
}
}
public sealed class SingletonQueue
{
static readonly object _objectLock = new object();
private BlockingCollection<string> _queue;
private static SingletonQueue _instance;
public static SingletonQueue Instance
{
get
{
lock (_objectLock)
{
return _instance ?? (_instance = new SingletonQueue());
}
}
}
private SingletonQueue()
{
_queue = new BlockingCollection<string>();
}
public void AddToQueue(string s)
{
_queue.Add(s);
}
public string GetFromQueue()
{
return _queue.Take();
}
}