ThreadMsg.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using MqttMsgServer.Model;
  2. using MqttMsgServer.Service.Client;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading;
  8. using System.Threading.Tasks;
  9. namespace MqttMsgServer.Service
  10. {
  11. public class ThreadMsg : IDisposable
  12. {
  13. public static Queue<ReceiveMessageRecord> Msgs;
  14. Thread _thread = null;
  15. static ThreadMsg _ThreadReceiveMsg = null;
  16. public static ThreadMsg ThreadReceiveMsg => _ThreadReceiveMsg ?? (_ThreadReceiveMsg = new ThreadMsg());
  17. public ThreadMsg()
  18. {
  19. if (Msgs != null) return;
  20. Msgs = new Queue<ReceiveMessageRecord>();
  21. _thread = new Thread(Work);
  22. _thread.Start();
  23. }
  24. private void Work()
  25. {
  26. while (true)
  27. {
  28. if (Msgs.Count > 0)
  29. {
  30. ReceiveMessageRecord mr = null;
  31. lock (Msgs)
  32. {
  33. mr = Msgs.Dequeue();
  34. }
  35. if (mr != null)
  36. {
  37. try
  38. {
  39. ClientInfoService cs = new ClientInfoService();
  40. cs.WriteData(mr);
  41. }
  42. catch (Exception err)
  43. {
  44. Console.WriteLine(err);
  45. }
  46. }
  47. }
  48. Thread.Sleep(1);
  49. }
  50. // ReSharper disable once FunctionNeverReturns
  51. }
  52. public void Insert(ReceiveMessageRecord pm)
  53. {
  54. if (pm != null)
  55. {
  56. lock (Msgs)
  57. {
  58. Msgs.Enqueue(pm);
  59. }
  60. }
  61. }
  62. public void Dispose()
  63. {
  64. throw new NotImplementedException();
  65. }
  66. }
  67. }