public void RunConsumer() { while (!_stopThread) { Datacontainer container = null; while (!_dataQueue.TryDequeue(out container)) { Thread.Sleep(0); } _display = container.getRawDoubles().ToList(); mmhHgValues = _convertClass.Conversation(_display); /* * foreach (var item in _convertClass.Conversation(_display)) * { * if (mmhHgValues.Count < 3000) * { * mmhHgValues.Add(item); * } * if (mmhHgValues.Count >= 3001) * { * mmhHgValues.RemoveAt(0); * mmhHgValues.Add(item); * } * } */ allReadings.AddRange(_display); Notify(); } }
private void AnalogInCallback(IAsyncResult ar) { try { if (runningTask != null && runningTask == ar.AsyncState) { // Read the available data from the channels data = analogInReader.EndReadWaveform(ar); //DataToDataList(data); var measurementDatacontainer = new Datacontainer(); measurementDatacontainer.SetRawDataSample(data); _datacontainer.Enqueue(measurementDatacontainer); //Consumer producer patteren analogInReader.BeginMemoryOptimizedReadWaveform(numberOfReadings, analogCallback, myTask, data); } } catch (DaqException exception) { // Display Errors runningTask = null; myTask.Dispose(); } }