![]() |
|
Модераторы: gambit, Kefir, Partizan |
![]()
|
|
| Stas123 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 18.11.2009 Репутация: нет Всего: нет |
Как организовать много поточность в WPF?
Мое окно получеат данные, я их вывожу в окно, при этом я хочу иметь возможность нажимать на кнопки.(данные я получаю постоянно) Я сделал это так
Но поток с данными занимет все время и не дает возможности что-либо делать. |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 2 Всего: 118 |
вам надо в гуй выводить?
вообще говоря вывод в гуй из другого потока это на мой взгляд очень медленная операция... делается это так:
медленность упирается в STA шность модели (оно еще куда не шло), и собственно в диспатчер... можно попробывать как-нибуть тесты скорости в winforms и wpf -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: 22 Всего: 87 |
jonie правильно сказал. Если вы на каждой итерации цикла while(true) будете через диспатчер обновлять гуй, то этот самый гуй такими темпами будет всё время отставать (причем с течением времени всё больше и больше). Вы получайте данные как вам надо, а гуй обновляйте ну максимум раз в 0.1 секунды (делать интервал меньше просто нет смысла - пользователь не сможет отследить такие обновления).
|
|||
|
||||
| Stas123 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 18.11.2009 Репутация: нет Всего: нет |
jonie, а как ещё можно это сделать? Если не из другого потоки и при этом иметь возможность нажимать на кнопки?
|
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 2 Всего: 118 |
Stas123, по сути никак. ГУЙ это узкое горлышко, т.к. он STAшный.
Я вообще когда боюсь что не буду успевать что то обрабатывать, но надо показывать в гуй то делаю копию данных, которые и показываю в гуе. типа (WT - рабочий поток, GT - GUI поток): wt - обрабатывает данные, lock(память) { сохраняет копию их в памяти} gt - lock (память) { выводим в гуй} при этом lock это ReadWriteLock... -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |