Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с обращением к коллекции 
V
    Опции темы
ДобренькийПапаша
Дата 26.4.2010, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 3
Всего: 7



Запускаю в новом потоке функцию, которая парсит файл. Она выдирает нужные значения для построения графика.

Код

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"

Я так понял, что-то у меня с потоками плохо)))
Подскажите как правильно?


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
ДобренькийПапаша
Дата 26.4.2010, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 3
Всего: 7



Сделал через делегат с вызовом BeginInvoke() и EndInvoke() и всё нормально. Я так понял, что если операция реально долгая, то надо асинхронно.


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0472 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.