コード例 #1
0
        public void Read()
        {
            GearedValues <ObservablePoint> copyValues = new GearedValues <ObservablePoint>();

            if (IsReading)
            {
                return;
            }

            //lets keep in memory only the last 20000 records,
            //to keep everything running faster

            IsReading = true;

            Action readFromTread = () =>
            {
                while (IsReading)
                {
                    Thread.Sleep(1000);

                    //when multi threading avoid indexed calls like -> Values[0]
                    //instead enumerate the collection
                    //ChartValues/GearedValues returns a thread safe copy once you enumerate it.
                    //TIPS: use foreach instead of for
                    //LINQ methods also enumerate the collections

                    chartValue.Clear();
                    chartValue.AddRange(ChartsData.ChartPositionTimeValues);
                    int len = chartValue.Count;
                    if (len > 0)
                    {
                        //copyValues.AddRange(UAClientForm.ChartPositionTimeValues);

                        ChartsData.CartesianChartPositionTimeValues.AddRange(chartValue);

                        for (int i = 0; i < len & ChartsData.ChartPositionTimeValues.Count > 1; i++)
                        {
                            ChartsData.ChartPositionTimeValues.RemoveAt(0);
                        }
                    }
                    chartValue.Clear();
                }
            };

            //2 different tasks adding a value every ms
            //add as many tasks as you want to test this feature
            Task.Factory.StartNew(readFromTread);
            //Task.Factory.StartNew(readFromTread);
            //Task.Factory.StartNew(readFromTread);
            //Task.Factory.StartNew(readFromTread);
            //Task.Factory.StartNew(readFromTread);
            //Task.Factory.StartNew(readFromTread);
            //Task.Factory.StartNew(readFromTread);
            //Task.Factory.StartNew(readFromTread);
        }
コード例 #2
0
 // Clears the graph
 public void WipeGraph()
 {
     series1Values.Clear();
     series2Values.Clear();
     setLine1Values.Clear();
     setLine2Values.Clear();
     setLine3Values.Clear();
 }