private async Task <IoTConnectionQueue> Initialize(IotConnection connection, KinectDataHandler kinectDataHandler) { queue = new ConcurrentQueue <Body[]>(); thread = new Thread(async() => { while (!threadStop) { while (!this.queue.IsEmpty) { var bodies = default(Body[]); this.queue.TryDequeue(out bodies); var packet_id = IncrementAndGetPacket(); var resJson = kinectDataHandler.ParseBodiesJson(bodies, packet_id); if (resJson.ToString() != JsonAdapterKinect.EMPTY) { try { var result = connection.Publish(JsonProperties.EVENT, JsonProperties.FORMAT_JSON, resJson); if (result == null) { System.Diagnostics.Debug.Print("Error en la publicación " + resJson); } } catch (Exception ee) { System.Diagnostics.Debug.Print("Error: " + ee.Message); } finally { if (packet_id % 100 == 0) { System.Diagnostics.Debug.Print("Packet id: " + packet_id); } } } else { this.DecrementPacket(); } } await Task.Delay(50); } }); thread.Start(); await Task.Delay(1); return(this); }
public static async Task <IoTConnectionQueue> Create(IotConnection connection, KinectDataHandler kinectDataHandler) { return(await new IoTConnectionQueue().Initialize(connection, kinectDataHandler)); }