void UsbReader_OnDataReceived(object sender, UsbDataReceiveEventArgs e) { this.LastReceived = DateTime.Now; if (this.Channels.Any(c => c.IsRecording)) { Action <UsbDataReceiveEventArgs> act = new Action <UsbDataReceiveEventArgs>(ProcessRecordData); act.BeginInvoke(e, null, null); //ProcessRecordData(e); } else if (_ringBuffer.Count() > 0) { _ringBuffer.Clear(); } }
public async Task GivenMultipleThreadsWhenAddingValuesThenSynchronizeThreads() { // Arrange const int bufferSize = 10000; var sut = new CircularBuffer <string>(bufferSize); // Act var tasks = new List <Task>(); for (var taskId = 0; taskId < 5000; taskId++) { tasks.Add(Task.Factory.StartNew(() => { for (var messageIndex = 0; messageIndex < 1000; messageIndex++) { sut.Add($"message.{messageIndex}"); } })); } await Task.WhenAll(tasks); // Assert Assert.Equal(bufferSize, sut.Count()); }
public void TestCircularBuffer() { var target = new CircularBuffer <string>(2); Assert.AreEqual(0, target.Count()); target.Add("item1"); Assert.AreEqual(1, target.Count()); Assert.AreEqual("item1", target.First()); target.Add("item2"); Assert.AreEqual(2, target.Count()); Assert.AreEqual("item2", target.Last()); target.Add("item3"); Assert.AreEqual(2, target.Count()); Assert.AreEqual("item2", target.First()); Assert.AreEqual("item3", target.Last()); }
protected override void OnUpdateFrame(FrameEventArgs e) { if (UpdateFrequency == 0) { updateFrameTimes.Put(e.Time); if (updateFrameTimes.Sum(t => t) >= 1) { int frames = updateFrameTimes.Count(); updateFrameTimes.Clear(); unitTestControls.UpdateFps = frames; } } else { unitTestControls.UpdateFps = UpdateFrequency; } }
protected override void OnRenderFrame(FrameEventArgs e) { GL.Clear(ClearBufferMask.DepthBufferBit | ClearBufferMask.ColorBufferBit); gui.Render(); SwapBuffers(); if (RenderFrequency == 0) { renderFrameTimes.Put(e.Time); if (renderFrameTimes.Sum(t => t) >= 1) { int frames = renderFrameTimes.Count(); renderFrameTimes.Clear(); unitTestControls.RenderFps = frames; } } else { unitTestControls.RenderFps = RenderFrequency; } }
public float Average() { return(buffer.Sum() / buffer.Count()); }