![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
ДобренькийПапаша |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Решил всё-таки отдельную тему сделать, попробую сформулировать правильно.
Из функции по делегату в новом потоке вызывается функция парсинга текстового файла (выдираются значения для графика).
Сам метод парсинга:
Из-за того, что прикручивание находится в блоке InvokeRequired, то прикручивание происходит очень медленно, т.е. я некоторое время наблюдаю как точка за точкой появляются на графике... Соответственно надо это вынести в основной поток, откуда был запуск, но если в функции StartParsing раскомментить строки, то почему-то, дальше chart.Join() выполнение не идёт (ждал долго, быть такого не может). Короче, какой может быть выход из сложившейся ситуации? Это сообщение отредактировал(а) ДобренькийПапаша - 28.4.2010, 12:10 -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
||||
|
|||||
Miller_time |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 641 Регистрация: 8.9.2006 Где: Нижний Новгород Репутация: нет Всего: 1 |
А у тебя
находиться в разных потоках? Может быть просто дожидаеться пока, один поток закончит, работы с обьектом и передаст управление другому обьекту. |
|||
|
||||
ДобренькийПапаша |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
В разных потоках находится. По поводу дождаться читайте выше. -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
||||
|
|||||
Heinzz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 12.12.2008 Где: .net Репутация: 3 Всего: 9 |
а ежели Invoke не Required
![]() |
|||
|
||||
ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Это вы к чему? p.s. Пожалуйста, не пишите в тему, если не знаете как решить проблему. -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 17 Всего: 306 |
ДобренькийПапаша, не совсем понятно - заполнение графика идет во время парсинга или уже с формированным набором данных?
Если первое - то имхо - это не очень удачное решение. Если второе - передай массив данных как параметр в функцию, адрес которой передаешь потоку.
зы. и в догонку что используете - MS Chart? Это реально важно - ибо здесь уже можно задействовать гораздо более эффективные способы вывода данных. Это сообщение отредактировал(а) mrbrooks - 28.4.2010, 14:48 |
|||
|
||||
ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Использую MSChart. Сейчас график наполняется точками в функции парсинга, это как вы сказали неудачно. Так и есть! Я же написал, что я в функции парсинга, запущенной в новом потоке мне приходится обращаться через InvokeReqiured к графику... что замедляет очень сильно наполнение графика точками. Я пытался сделать так, чтобы результаты парсинга присваивались коллекциям на уровне класса, чтобы прикрутить точки к графику уже в основном потоке, но какие я встретил проблемы я тоже описал выше...
-------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
mrbrooks |
|
||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 17 Всего: 306 |
Ок. Я понимаю вашу озабоченность. Если вы используете M$ Chart - то используйте всю его мощь при работе с наборами данных. Продемонстрирую на примере:
Есть класс - характеризующий некую сущность - в моем случае координаты по Х и У:
Тогда общее решение:
Данный код вывел 10000 точек менее чем за секунду (у меня есесно). У меня складывается впечатлении что мы с вами уже этот вопрос обсуждали. Речь шла о парсинге CSV файла. Если это та же история я настоятельно рекомендую использовать все стандартные возможности для работы с файлом как с БД. Это быстрее и надежнее, чем строить по точкам и писать парсеры. |
||||
|
|||||
ДобренькийПапаша |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
После завершения работы функции график остаётся белым. Посмотрел в отладчике, stockPoints имеет 80 точек как и должно быть, а вот после прохода функции currentChart.DataBind() currentChart.Series[0].Points.Count=0, т.е. привязка не произошла как я понимаю... Это сообщение отредактировал(а) ДобренькийПапаша - 29.4.2010, 08:14 -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
||||
|
|||||
ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Так всё работает и очень быстро, спасибо mrbrooks за подсказу использовать binding. -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | .NET для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |