diff --git a/ISCamRecorder/MainForm.cs b/ISCamRecorder/MainForm.cs index d54c1be..0a0103b 100644 --- a/ISCamRecorder/MainForm.cs +++ b/ISCamRecorder/MainForm.cs @@ -53,7 +53,7 @@ _Cameras.ForEach(c => c.Connect()); // タイマー起動 - _UITimer = new System.Threading.Timer(UITimerCB, this, 0, 100); + _UITimer = new System.Threading.Timer(UITimerCB, this, 0, 30); _TriggerThread = Task.Run(TriggerThread); _SerialThread = Task.Run(SerialThread); _LastUpdate = DateTime.Now; @@ -89,9 +89,12 @@ /// private void Plot() { chart1.Series[0].Points.Clear(); - var times = _Sensor.Times.ToList(); - var values = _Sensor.Values.ToList(); - chart1.Series[0].Points.DataBindXY(times, values); + lock (SensorData.Locker) { + //var times = _Sensor.Times.ToList(); + //var values = _Sensor.Values.ToList(); + //chart1.Series[0].Points.DataBindXY(times, values); + chart1.Series[0].Points.DataBindXY(_Sensor.Times, _Sensor.Values); + } } diff --git a/ISCamRecorder/SensorData.cs b/ISCamRecorder/SensorData.cs index 6b03439..29a58fd 100644 --- a/ISCamRecorder/SensorData.cs +++ b/ISCamRecorder/SensorData.cs @@ -16,6 +16,7 @@ SerialPort _Serial = null; bool _ExitSignal = false; // 終了シグナル int _QueueLength = 100; + public static object Locker = new object(); /// /// 接続 @@ -61,11 +62,13 @@ var str = _Serial.ReadLine(); var val = int.Parse(str); var dt = DateTime.Now; - Values.Enqueue(val); - Times.Enqueue(dt); - if (Values.Count > _QueueLength) { - Values.Dequeue(); - Times.Dequeue(); + lock (Locker) { + Values.Enqueue(val); + Times.Enqueue(dt); + if (Values.Count > _QueueLength) { + Values.Dequeue(); + Times.Dequeue(); + } } }