|
окно ожидания
|
|||
---|---|---|---|
#18+
Ситуация простая: нужно вызвать диалоговое окно, пока что-то выполянется в другом потоке. Причем сделать это так, чтобы было очень удобно использовать. С backgroundWorker что-то решения мне не понравились, но нашел вот такой способ: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Если честно напрягает использование Dispatcher.PushFrame, могут тут быть подводные камни? Спасибо за подсказку) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 11:19 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
netivanЕсли честно напрягает использование Dispatcher.PushFrame, могут тут быть подводные камни? Спасибо за подсказку)Идея использовать Task - правильная. У меня была раньше реализация через PushFrame, не понравилась. В итоге понравилась такая постановка задачи: Код: c# 1. 2. 3. 4. 5. 6.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 12:36 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
Алексей К, не поверишь, именно от тебя ждал ответа. Чем не понравился frame? Можешь пример использования вашего велосипеда скинутЬ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 13:10 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
netivanне поверишь, именно от тебя ждал ответа.Неожиданно. :-) netivanЧем не понравился frame?Я наверное по другому сформулирую. Через frame решение вполне рабочее, но с предлагаемым решением работать удобнее , если асинхронности базируются на тасках. Боюсь, я точно сейчас не смогу сформулировать недостатки. Нужно вспоминать, писать примеры. :-) Тут вообще возможны два способа индикации выполняемой фоновой задачи: 1. Обсуждаемый случай - диалогом. Применяется, если нужно блокировать UI на время выполнения фоновой операции. 2. Индикация без блокирования UI. Можно сделать какой-нибудь анимацией в статусбаре главной формы, или ещё как. Одно из преимуществ - для обоих случаев применяется одинаковый подход. netivanМожешь пример использования вашего велосипеда скинутЬ?Первый фрагмент кода и есть пример использования. Если там что-то непонятно - уточните вопрос, я поясню. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 13:23 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
Ещё желательно сделать отображение диалога с задержкой (где-то в 0.5 секунды), чтобы для коротких тасков диалог не мелькал на экране. Но это уже следующий шаг. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 13:25 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
Алексей К, гавнокод. Нужно декларативно через mvvm. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 13:26 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
Можно и так сформулировать - при использовании тасков в PushFrame нет необходимости. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 13:28 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
МСУгавнокод.Ну можно же подобрать другое слово. У нас же вроде мараторий на фекальные формулировки. :-) МСУНужно декларативно через mvvm.Конечно. Но это уже следующий этап. Аспнетчикам не понять. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 13:33 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
Алексей КНу можно же подобрать другое слово. Ок. "кодкоторыйнихеранекоррелируетскачествомиэргономикой" :) Алексей ККонечно. Всё должно само замлиться и декларативно подтягиваться :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 13:35 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
Алексей К, можно про AddRef и Release подробнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 13:37 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
netivanАлексей К, можно про AddRef и Release подробнее. Ну а что тут подробнее, утечка на утечке и утечкой погоняет ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 13:40 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
netivanАлексей К, можно про AddRef и Release подробнее. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 13:48 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
МСУnetivanАлексей К, можно про AddRef и Release подробнее. Ну а что тут подробнее, утечка на утечке и утечкой погоняет Тебя SeVa что ли укусил? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 13:48 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
netivanАлексей К, можно про AddRef и Release подробнее.Это надо на случай, когда одновременно выполняются несколько тасков. Мы же не будем для них показывать несколько диалогов "Подождите". :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 13:50 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
Алексей КnetivanАлексей К, можно про AddRef и Release подробнее.Это надо на случай, когда одновременно выполняются несколько тасков. Мы же не будем для них показывать несколько диалогов "Подождите". :-) ага, только ща понял. Спасибо! Только у меня все же пока что 1 Таск планируется. Сейчас попробую с вашим примером) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 13:53 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
Алексей К, сколько же опасного кода :) Окно ожидания в вебе с блокировкой UI: Код: javascript 1.
Делов-то . ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 14:03 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
МСУАлексей К, сколько же опасного кода :) Окно ожидания в вебе с блокировкой UI: Код: javascript 1.
Делов-то . Вообще-то мы обсуждаем реализацию. Прикладной код проще некуда. Давай я его ещё раз повторю, для верности. :-) Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 14:21 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
netivanАлексей Кпропущено... Это надо на случай, когда одновременно выполняются несколько тасков. Мы же не будем для них показывать несколько диалогов "Подождите". :-) ага, только ща понял. Спасибо! Только у меня все же пока что 1 Таск планируется. Сейчас попробую с вашим примером)Ещё обрати внимание на ContinueWithSync. Это ContinueWith через шедулер, привязанный к контексту синхронизации главного UI-потока. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 14:27 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
Алексей КВообще-то мы обсуждаем реализацию. Прикладной код проще некуда. Давай я его ещё раз повторю, для верности. :-) Всё-равно, пока еще не знаю, но что-то мне не нравится в этом коде :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 14:30 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
МСУАлексей КВообще-то мы обсуждаем реализацию. Прикладной код проще некуда. Давай я его ещё раз повторю, для верности. :-) Всё-равно, пока еще не знаю, но что-то мне не нравится в этом коде :)Не бесит, уже хорошо. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 14:32 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
Алексей КНе бесит, уже хорошо. :-) Ну, не бесит, конечно, но суховато как-то... Десктоп он такой :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 14:35 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
Алексей КМСУпропущено... Всё-равно, пока еще не знаю, но что-то мне не нравится в этом коде :)Не бесит, уже хорошо. :-) ну так. Может еще обернуть в RunTaskAsynkWithMsgBox() ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 14:47 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
netivanАлексей Кпропущено... Не бесит, уже хорошо. :-) ну так. Может еще обернуть в RunTaskAsynkWithMsgBox()Мне в виде расширяющего метода для таска нравится больше. Тем более, после закрытия диалога "подождите" может быть продолжение, вроде: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 15:00 |
|
окно ожидания
|
|||
---|---|---|---|
#18+
netivanну так. Может еще обернуть в RunTaskAsynkWithMsgBox()Ну и конечно же, .LockUi() отображает дефолтный диалог, описанный как синглетон. Если для таска нужен специальный диалог, то создаём UiExecutionLocker явно. Получается что-то вроде того, что ты предлагаешь: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2013, 15:12 |
|
|
start [/forum/topic.php?fid=21&msg=38320118&tid=1441348]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 297ms |
total: | 423ms |
0 / 0 |