Запускаю в новом потоке функцию, которая парсит файл. Она выдирает нужные значения для построения графика.
| Код | private void StartParsing() { Thread chart = new Thread(ParseFile); chart.Start(); } private void ParseFile() { this.x.Clear(); this.y.Clear(); string[] file; file = File.ReadAllLines(this.fileFullPath); //Кое-какие детали я опустил.
//Тут заполняю x for (int i = 1; i < rows; i++) { char[] date = parts[i, 2].ToCharArray(); char[] time = parts[i, 3].ToCharArray();
// ReSharper disable RedundantToStringCall string specifyDate = (date[6].ToString() + date[7].ToString() + '.' + date[4].ToString() + date[5].ToString() + '.' + date[0].ToString() + date[1].ToString() + date[2].ToString() + date[3].ToString() + " " + time[0] + time[1] + ":" + time[2] + time[3]); x.Add(DateTime.Parse(specifyDate)); }
//Тут заполняю y for (int i = 1; i < rows; i++) { y.Add(double.Parse(parts[i, 7].Replace('.', ','))); }
if (currentChart.InvokeRequired) { if (this.currentChart != null) { Invoke(new Action(() => { currentChart.Series.Clear(); Series series1 = new Series(); series1.ChartArea = "ChartArea1"; series1.ChartType = SeriesChartType.Line; series1.Legend = "Legend1"; //series1.Name = ""; series1.XValueType = ChartValueType.DateTime; series1.YValueType = ChartValueType.Double; currentChart.Series.Add(series1); currentChart.Series[0].Points.DataBindXY(x, y); //Вылет, количество значений x не соответствует //количеству значений y. })); } }
|
Дебаггер врёт. Всё там соответствует. Смотрю при дебаге коллекцию x и коллекцию y, а там в свойству Count написано "Count = Function evaluation disabled because a previous function evaluation timed out. You must continue execution to reenable function evaluation"
Я так понял, что-то у меня с потоками плохо))) Подскажите как правильно? |