![]() |
|
Модераторы: gambit, Kefir, Partizan |
![]()
|
|
| dAlex |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 3.8.2006 Где: Санкт-Петербург Репутация: нет Всего: 2 |
Иногда в расчетах необходимо делать паузу (для того, чтобы успели примениться изменения) в одну-две секунды.
Если делать
окно при этом также подвисает. Как сделать отрисовку окна отдельно? Функции, в которых делается пауза, вызываются так
--------------------
eof() |
||||
|
|||||
| likegift |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 14.10.2008 Репутация: 2 Всего: 3 |
а вы что считаете в main-thread?
|
|||
|
||||
| SergeyLoginov |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 28.9.2009 Где: Иваново Репутация: 4 Всего: 4 |
Не совсем уверен, что правильно понял, но, возможно, поможет вот это:
Добавлено через 4 минуты и 10 секунд А вообще для длительных вычислений вроде как используется BackgroundWorker там... А UI обновляется в Dispatcher.BeginInvoke(). Что-то мне подсказывает, что задача вовсе не требует пауз в одну-две секунды |
|||
|
||||
| dAlex |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 3.8.2006 Где: Санкт-Петербург Репутация: нет Всего: 2 |
likegift,
SergeyLoginov, да там не совсем расчеты, там биржевая торговля и в определенных местах после отправки заявки на биржу надо чуть чуть подождать, потому что принимается не сразу. То есть тут не нагрузка на процессор, но пауза нужна =) просто у меня UI обновляется сам, после изменения полей --------------------
eof() |
|||
|
||||
| likegift |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 14.10.2008 Репутация: 2 Всего: 3 |
А нельзя в таком случае делать асинхронную отправку данных с обработкой события по завершению?
|
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 13 Всего: 59 |
Вообще, любые реализации типа "чуть чуть подождать" разрушительны. Вы не можете гарантировать, что за 1-2 секунды произойдет сетевое(!!!) ожидаемое вами событие. Всегда надо использовать способ, как написал likegift. Реализация его тоже зависит от ваших бизнес-процессов.
-------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| dAlex |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 3.8.2006 Где: Санкт-Петербург Репутация: нет Всего: 2 |
likegift,
-Mikle-, это на будущее =) но даже если так, пока будем ждать события, gui также подвиснет. Тем более, тут такая кривая система, что у нее не узнать, сделано ли действие, потому что оно, по идее, должно делаться мгновенно. Это сообщение отредактировал(а) dAlex - 18.5.2011, 09:56 --------------------
eof() |
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 13 Всего: 59 |
А это зависит от приложения уже. Как сделаешь, так и будет. События не обязаны исходить из основного потока. На данный момент, могу посоветовать только выполнять действия "операция1-подождать-операция2" в отдельном потоке (BackgroundWorker например) и синхронизировать их с основным (если нужно). -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| dAlex |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 3.8.2006 Где: Санкт-Петербург Репутация: нет Всего: 2 |
пытаюсь делать backgroundworker, но что-то запуталась
по msdn
но в том месте, где мне надо запустить backgroundWorker, мне мою функцию надо передать со своим параметром. Как это сделать? --------------------
eof() |
||||
|
|||||
| likegift |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 14.10.2008 Репутация: 2 Всего: 3 |
|
|||
|
||||
| dAlex |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 3.8.2006 Где: Санкт-Петербург Репутация: нет Всего: 2 |
а в TimeConsumingOperation обязательно добавлять параметры bw и arg? зачем они нужны?
upd: так, с arg ясно, это как раз наш SuperPuperParam Это сообщение отредактировал(а) dAlex - 19.5.2011, 14:10 --------------------
eof() |
|||
|
||||
| likegift |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 14.10.2008 Репутация: 2 Всего: 3 |
а у вас аргумент какого типа?
|
|||
|
||||
| dAlex |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 3.8.2006 Где: Санкт-Петербург Репутация: нет Всего: 2 |
likegift, тут свой тип Trade =)
сделала так
но такое ощущение, что Core.CheckNewStrike вообще не выполняется --------------------
eof() |
||||
|
|||||
| likegift |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 14.10.2008 Репутация: 2 Всего: 3 |
dAlex,
TimeConsumingOperation - это просто метод из примера, без него можно жить, но с ним удобнее
а проверить то никак? на консоль там вывести или в лог.. |
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 13 Всего: 59 |
или брикпоинт поставить...
-------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |