using MqttMsgServer.Model; using MqttMsgServer.Service.Client; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace MqttMsgServer.Service { public class ThreadMsg : IDisposable { public static Queue Msgs; Thread _thread = null; static ThreadMsg _ThreadReceiveMsg = null; public static ThreadMsg ThreadReceiveMsg => _ThreadReceiveMsg ?? (_ThreadReceiveMsg = new ThreadMsg()); public ThreadMsg() { if (Msgs != null) return; Msgs = new Queue(); _thread = new Thread(Work); _thread.Start(); } private void Work() { while (true) { if (Msgs.Count > 0) { ReceiveMessageRecord mr = null; lock (Msgs) { mr = Msgs.Dequeue(); } if (mr != null) { try { ClientInfoService cs = new ClientInfoService(); cs.WriteData(mr); } catch (Exception err) { Console.WriteLine(err); } } } Thread.Sleep(1); } // ReSharper disable once FunctionNeverReturns } public void Insert(ReceiveMessageRecord pm) { if (pm != null) { lock (Msgs) { Msgs.Enqueue(pm); } } } public void Dispose() { throw new NotImplementedException(); } } }