MessageQueue.cs 868 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace SKMC.Api.Common.Types
  7. {
  8. public class MessageQueue<T>
  9. {
  10. private static MessageQueue<T> instance;
  11. private readonly BlockingQueue<T> queue = new BlockingQueue<T>();
  12. private MessageQueue() { }
  13. public static MessageQueue<T> Instance()
  14. {
  15. if (instance == null) instance = new MessageQueue<T>();
  16. return instance;
  17. }
  18. public int Count { get => queue.Count; }
  19. public void Put(T t)
  20. {
  21. queue.Add(t);
  22. }
  23. public T Get()
  24. {
  25. return queue.Take();
  26. }
  27. public void Clear()
  28. {
  29. while (queue.Count > 0)
  30. {
  31. Get();
  32. }
  33. }
  34. }
  35. }