private void ProcessImages(int id) { try { List <NetMq.Messages.ImageMessage> images = null; var watch = Stopwatch.StartNew(); while (!IsDisposed) { images = QueueImages.ToList().FindAll(item => item.BoxTrackingId == id); if (images?.Count < 1) { Thread.Sleep(10); if (watch.ElapsedMilliseconds > 5000) { break; } } else { break; } } if (images?.Count > 0) { this.Log($"(Box)ID: {id} -> Processing {images?.Count} images..."); //****** HIER dann die Bildverarbeitung durchfuehren ****** //... //... // !!!In Abhaengigkeit der Konfigurationseinstellung wird aktuell entweder IO oder NIO zurueck gegeben!!! var boxCheckState = Config.ReturnBoxResultIo ? BoxCheckStates.IO : BoxCheckStates.NIO; var boxFailureReason = Config.ReturnBoxResultIo ? BoxFailureReasons.BOX_FAILURE_NONE : BoxFailureReasons.BOX_FAILURE_UNKNOWN; //... //... //****** ENDE ****** SendResult(id, boxCheckState, boxFailureReason); this.Log($"(Box)ID: {id} -> Processing finished! BoxCheckState: {boxCheckState} / BoxFailureReason: {boxFailureReason}"); } } catch (Exception exp) { LastException = exp; } }
private void OnReceiveImageMessage(object sender, NetMQ.NetMQSocketEventArgs e) { bool more = false; var buffer = e.Socket.ReceiveFrameBytes(out more); if (!more) { var message = NetMq.Messages.BaseMessage.FromRawBuffer(buffer) as NetMq.Messages.ImageMessage; if (message != null) { QueueImages.Enqueue(message); } while (QueueImages.Count > 10) { NetMq.Messages.ImageMessage tmp; QueueImages.TryDequeue(out tmp); } } }