|
async / await and exception handling
|
|||
---|---|---|---|
#18+
Идея простая, по событию запускаем задачу на пуле задач для обработки действия. Пользователю показываю модалный диалог в котором отображаю прогресс. По завершению процесса закрываю диалог и выполнение идют дальше. Пытаюсь пременить async/await для разбиение поцесса на части. Вот что получается пока: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
Что не получается: если во время обработки процесса происходит исключение то я хочу его обрабатывать в наружнем метчоде, (том, который вызывает async метод). Пока получается только "Unhandled Exception" Подскаычите, куда смотрет. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 16:02 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikron, смотрел на ютубе уроки по C# https://www.youtube.com/channel/UCmdZlsCXz57nazOdp_o5wAg ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 16:19 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikron, button1_Click должен быть async: Код: c# 1.
и тогда можно будет просто сделать Код: c# 1.
без task и Wait. И тогда получишь своё исключение. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 16:21 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
Использовать Tread.Sleep() в тасках ПЛОХАЯ идея! используйте await Task.Delay(ms) или Task.Delay(ms).Wait(); ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 16:38 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikron, Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 16:40 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
hVosttmikron, button1_Click должен быть async: Код: c# 1.
и тогда можно будет просто сделать Код: c# 1.
без task и Wait. И тогда получишь своё исключение. Так делать нельзя. В принципе конечно можно, но работать будет не так как надо. Когда по твоему выполнится dialog.ShowDialog(this); ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 18:07 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
Roman MejtesИспользовать Tread.Sleep() в тасках ПЛОХАЯ идея! используйте await Task.Delay(ms) или Task.Delay(ms).Wait(); Тут ежу понатно, что sleep только для демонстрации. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 18:09 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikronТак делать нельзя. В принципе конечно можно, но работать будет не так как надо. Когда по твоему выполнится dialog.ShowDialog(this); Код: c# 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 18:23 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
hVosttmikronТак делать нельзя. В принципе конечно можно, но работать будет не так как надо. Когда по твоему выполнится dialog.ShowDialog(this); Код: c# 1. 2. 3. 4. 5. 6. 7.
А это тут причем? Куда это вставлять? Идею не понял. Или я дурак или идея глупая. Приведи пример кода (или мой кусок исправь) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 18:42 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikronА это тут причем? Куда это вставлять? Что тут непонятного? dialog.ShowDialogAsync() ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 18:54 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
hVosttmikronТак делать нельзя. В принципе конечно можно, но работать будет не так как надо. Когда по твоему выполнится dialog.ShowDialog(this); Код: c# 1. 2. 3. 4. 5. 6. 7.
Kак работает async ты не понимаеш. Не растраивайся, нас милион. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 18:58 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
hVosttmikronА это тут причем? Куда это вставлять? Что тут непонятного? dialog.ShowDialogAsync() Просто заменить одну строчку dialog.ShowDialog(this)? Получим блокировку. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 19:01 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikronKак работает async ты не понимаеш. Не растраивайся, нас милион. mikronПросто заменить одну строчку dialog.ShowDialog(this)? Получим блокировку. Давненько не работал с WinForms, но я был бы очень рад, если ты пояснишь свою мысль. Возможно я ошибаюсь. Можно ещё через Dispatcher решить задачу. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 19:32 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
>mikron, сегодня, 16:02 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1247548&msg=20149979] [20149979] >Идея простая, по событию запускаем задачу ... Ситуация аналогичная - построение выборки с Oracle больше минуты, в интерактивном-то приложении. Полный облом. Надо заполнить ожидание. Подошел такой вариант - демонстратор процесса ожидания есть вращающийся земной шарик и прогрессбар. В одном пользовательском приложении: смысловое приложение - WinForm, демонстратор - WPF. Поступил так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
С уважением, Владимир ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 21:10 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikron, Думаю, с await здесь не прокатит. По старинке (Task.ContinueWith) не подходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 21:11 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
hVosttmikronKак работает async ты не понимаеш. Не растраивайся, нас милион. mikronПросто заменить одну строчку dialog.ShowDialog(this)? Получим блокировку. Давненько не работал с WinForms, но я был бы очень рад, если ты пояснишь свою мысль. В DoItNowAsync после успешного завершения await необходимо переключение контекста (SynchrinisationConext) но для этого необходимо что-бы запустился message pump. В моей реализации это достигается dialog.ShowDialog(this); В твоей реализации этого никогда не произойдёт т.к. поток просто встанет в task.Wait(); И твой this.ShowDialog() из ShowDialogAsync тоже никда не запустится, по той-же причине. Просто проверь, код же ест. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 00:08 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
>mikron, сегодня, 00:08 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1247548&msg=20151610] [20151610] >...В моей реализации это достигается dialog.ShowDialog(this)... Вы рассматривали граничный вариант? Проходит? Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
С уважением, Владимир ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 02:39 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikronПросто проверь, код же ес Я не поленился, и проверил. Картинка и код: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 09:28 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikronВ DoItNowAsync после успешного завершения await необходимо переключение контекста (SynchrinisationConext) но для этого необходимо что-бы запустился message pump. В моей реализации это достигается dialog.ShowDialog(this); В твоей реализации этого никогда не произойдёт т.к. поток просто встанет в task.Wait(); И твой this.ShowDialog() из ShowDialogAsync тоже никда не запустится, по той-же причине. Ты какие-то нелепейшие глупости говоришь. У меня всё работает, я изначально привёл тебе решение, но ты даже не стал проверять. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 09:29 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
hVosttmikronВ DoItNowAsync после успешного завершения await необходимо переключение контекста (SynchrinisationConext) но для этого необходимо что-бы запустился message pump. В моей реализации это достигается dialog.ShowDialog(this); В твоей реализации этого никогда не произойдёт т.к. поток просто встанет в task.Wait(); И твой this.ShowDialog() из ShowDialogAsync тоже никда не запустится, по той-же причине. Ты какие-то нелепейшие глупости говоришь. У меня всё работает, я изначально привёл тебе решение, но ты даже не стал проверять. Ты просил обяснить, но видно не в состоянии понять. Начнём с первого предложения, не пропуская слов. mikronВ DoItNowAsync после успешного завершения await необходимо переключение контекста (SynchrinisationConext) Переводу на доступный - закомнитруй выброс исключения. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 10:30 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikronmikronВ DoItNowAsync после успешного завершения await необходимо переключение контекста (SynchrinisationConext) Переводу на доступный - закомнитруй выброс исключения. Я всё равно не понимаю, что ты хочешь сказать и к чему ведёшь. Вот твой изначальный вопрос: mikronЧто не получается: если во время обработки процесса происходит исключение то я хочу его обрабатывать в наружнем метчоде, (том, который вызывает async метод). Пока получается только "Unhandled Exception" Подскаычите, куда смотрет. Я тебе выше привёл полное решение, в котором твоё исключение попадает в «наружний метод» в чистом виде. Если мне не веришь, скопируй код, который я тебе привёл и выполни. Увидишь отлов своего исключения. Тем более ты мне что-то говорил, что это работать не будет, что будет какая-то блокировка — это не правда. Всё работает, никаких блокировок. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 10:36 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
hVostt, Стоп, только сейчас заметил, ты изменил метод DoItNowAsync, убрал присваивание dialogResult. Посмотрю позже. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 10:41 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
hVosttmikronА это тут причем? Куда это вставлять? Что тут непонятного? dialog.ShowDialogAsync() Я не люблю головоломок из области найди отличия Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 11:01 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikronhVostt, Стоп, только сейчас заметил, ты изменил метод DoItNowAsync, убрал присваивание dialogResult. Посмотрю позже. Форма диалога должна сама устанавливать значение этого свойства и возвращать результат, установка этого свойства внешним кодом это жутковатый грубый костыль. Конечно я снёс это безобразие. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 11:05 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikronЯ не люблю головоломок из области найди отличия Обо всех отличиях было сказано выше, про async и метод расширения, про то, что task.Wait надо убрать я тоже писал. Не люблю повторяться, просто применил всё, что было сказано. Про присваивание диалогу значения свойства, тоже написал, но можно и присвоить если очень хочется. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 11:06 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
hVosttmikronЯ не люблю головоломок из области найди отличия Обо всех отличиях было сказано выше, про async и метод расширения, про то, что task.Wait надо убрать я тоже писал. Не люблю повторяться, просто применил всё, что было сказано. Про присваивание диалогу значения свойства, тоже написал, но можно и присвоить если очень хочется. Я ещё не доконца разобрался как работает то что ты набросал, но есть замечания. 1. Убери исключение - диалог не закрывается после асинхронной обработки (слип). Другое поведение. 2. Я уже сказал, по поводу private async void button1_Click Так делать нельзя. В принципе конечно можно, но работать будет не так как надо. Другими словами, не приемлемо для меня. В примере я повесил это на обработчик события, в реалной жизни это синхронный метод, его менять нельзя, его завершения ждут. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 11:24 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikron1. Убери исключение - диалог не закрывается после асинхронной обработки (слип). Другое поведение. Убрал. Закрывается. mikron2. Я уже сказал, по поводу private async void button1_Click Так делать нельзя. В принципе конечно можно, но работать будет не так как надо. Другими словами, не приемлемо для меня. В примере я повесил это на обработчик события, в реалной жизни это синхронный метод, его менять нельзя, его завершения ждут. Если обработчик кнопки вызывает асинхронную операцию, то делать не просто можно, так делать нужно! Может ты путаешь параллельные операции, которые надо исполнять в BackgroundWorker и асинхронные? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 11:29 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
hVosttmikron1. Убери исключение - диалог не закрывается после асинхронной обработки (слип). Другое поведение. Убрал. Закрывается. Давай угадаю, опят добавил dialog.DialogResult = DialogResult.OK; но умолчал hVosttmikron2. Я уже сказал, по поводу private async void button1_Click Так делать нельзя. В принципе конечно можно, но работать будет не так как надо. Другими словами, не приемлемо для меня. В примере я повесил это на обработчик события, в реалной жизни это синхронный метод, его менять нельзя, его завершения ждут. Если обработчик кнопки вызывает асинхронную операцию, то делать не просто можно, так делать нужно! Может ты путаешь параллельные операции, которые надо исполнять в BackgroundWorker и асинхронные? Еще раз: в тестовом примере есть кнопка, в реалной проблеме нету кнопки. В тестовом примере метод называется ... button1_Click(object sender, EventArgs e) в реалной проблеме метод называется void makeSomeFunnyStuff() Еще раз: в тестовом примере есть кнопка, в реальной проблеме нету кнопки. В тестовом примере метод называется button1_Click(object sender, EventArgs e) в реальной проблеме метод называется void makeSomeFunnyStuff() и в реалной проблеме метод должен быть синхронным.. Просто прими как ограничение. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 11:53 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
>mikron, сегодня, 00:08 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1247548&msg=20151610] [20151610] >...И твой this.ShowDialog() из ShowDialogAsync... Посмотри здесь . С уважением, Владимир ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 12:39 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikronи в реалной проблеме метод должен быть синхронным.. Просто прими как ограничение. Ну выполняй код тогда синхронно, без тасков и асинков. В общем, я решение дал. Оно работает. Поставленную задачу в начале топика решает. Чего ты хочешь мне сообщить, я категорически не понимаю, поэтому умываю руки. Решай сам, что тебе нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 13:22 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
hVosttmikronи в реалной проблеме метод должен быть синхронным.. Просто прими как ограничение. Ну выполняй код тогда синхронно, без тасков и асинков. В общем, я решение дал. Оно работает. Поставленную задачу в начале топика решает. Чего ты хочешь мне сообщить, я категорически не понимаю, поэтому умываю руки. Решай сам, что тебе нужно. Да не, я истины ради. Ты решил не мою задачу а похожую. Хороший спаринг партнёр нужен, иначе я застрял. mikronИдея простая, по событию запускаем задачу на пуле задач для обработки действия. Пользователю показываю модалный диалог в котором отображаю прогресс. По завершению процесса закрываю диалог и выполнение идeт дальше. (синхронно) Пытаюсь пременить async/await для разбиение поцесса на части. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 13:45 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikronДа не, я истины ради. Ты решил не мою задачу а похожую. Хороший спаринг партнёр нужен, иначе я застрял. Ну покажи проблему? У меня пока ни затыков, ни блокировок, всё работает :) Что сделать надо, чтобы всё сломалось? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 14:06 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
hVostt, Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 14:34 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikron, в асинхронном алгоритме должно быть два метода: 1) запускаем задачу и выходим. 2) обрабатываем завершение задачи. Разложи свою задачу на два независимых метода. (У меня не получается разложить ее: из-за ShowDialog нельзя выйти из 1-го метода) async/await просто помогают два метода соединить в один... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 15:55 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
hVostt, Вот так уже не работатет Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Но это же детали. А вобще вопрос снимается т.к. в данном случае код который я привёл работатет как и ожидается, но повидение Студии странное: появляется окно о необработаном исклюцении и в последствии task.Wait как и ожидатется пробрасывает исключение. Одно допонение. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 16:36 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikronА вобще вопрос снимается т.к. в данном случае код который я привёл работатет как и ожидается, но повидение Студии странное: появляется окно о необработаном исклюцении и в последствии task.Wait как и ожидатется пробрасывает исключение. Одно допонение. Мне кажется, я даже уверен, ты используешь таски не по назначению. mikron Код: c# 1.
Вот так правильно, если ты обрабатываешь асинхронную операцию. Не вериш? Можешь поспорить напрямую с разработчиками Microsoft, наверняка там сидят не далёкие люди ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 17:15 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
hVosttВот так правильно, если ты обрабатываешь асинхронную операцию. С чего ты решил что моя операция асинхронна - не пойму. Я ещё раз повторю - мне надо синхронно. И какие бы высоколобые люди в микрософте не сидели - они тоже не святые и от ошибок не обережены. Страдая дальше вот чего получил. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 18:11 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikronС чего ты решил что моя операция асинхронна - не пойму. Я ещё раз повторю - мне надо синхронно. Зачем синхронную операцию пытаться выполнить асинхронно? Ты бы как-то реальную задачу обозначил, чего ты пытаешься сделать, а не синтетические примеры с тасками и слипами. mikronИ какие бы высоколобые люди в микрософте не сидели - они тоже не святые и от ошибок не обережены. А по-конкретнее? Нашёл какие-то ошибки? mikronСтрадая дальше вот чего получил. Можешь сказать, зачем ты вообще пихаешь сюда Task.Run? Для чего? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 18:40 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
hVosttmikronС чего ты решил что моя операция асинхронна - не пойму. Я ещё раз повторю - мне надо синхронно. Зачем синхронную операцию пытаться выполнить асинхронно? Ты бы как-то реальную задачу обозначил, чего ты пытаешься сделать, а не синтетические примеры с тасками и слипами. Операция синхронна, но надо дать пользователю информацию что программа не подвисла а какй-нибудь прогросс идикатор. 20107068 hVosttmikronИ какие бы высоколобые люди в микрософте не сидели - они тоже не святые и от ошибок не обережены. А по-конкретнее? Нашёл какие-то ошибки? Ты аргументировал свой позицию не фактами а авторитетом. Это указание на несостоятелность аргумента. 20154452 hVosttМожешь сказать, зачем ты вообще пихаешь сюда Task.Run? Для чего? Очевидно, запись файла операция не быстрая. Вобще всё это описал в первом посте mikronИдея простая, по событию запускаем задачу на пуле задач для обработки действия. Пользователю показываю модалный диалог в котором отображаю прогресс. По завершению процесса закрываю диалог и выполнение идют дальше. Есть идея лутше? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 18:58 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikronЕсть идея лутше? Может, не мучиться, и сделать всё вышеописанное с помощью BackgroundWorker'а? (всё равно ведь винформс). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 19:02 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikronОперация синхронна, но надо дать пользователю информацию что программа не подвисла а какй-нибудь прогросс идикатор. В чём проблема: а) сначала показать диалог, затем запустить операцию б) запустить операцию в BackgroundWorker и показывать прогресс бар? Задача стара как мир, за каким дедушкой, объясни мне пожалуйста, тут понадобились таски? Уже который раз задаю один и тот же вопрос. mikronТы аргументировал свой позицию не фактами а авторитетом. Это указание на несостоятелность аргумента. Не авторитетом, а первоисточником. Ты перепутал эти понятия и сделал неправильные выводы. mikronОчевидно, запись файла операция не быстрая. Вобще всё это описал в первом посте Запись файла — асинхронная операция. Но судя по всему, раз ты даже таких элементарных вещей не знаешь, о чём мы вообще тогда разговариваем? Если для тебя документация Microsoft «не авторитет», видимо поэтому ты не знаешь таких вещей. В общем, всё ясно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 19:16 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныmikronЕсть идея лутше? Может, не мучиться, и сделать всё вышеописанное с помощью BackgroundWorker'а? (всё равно ведь винформс). К сожалению, бэкграунд воркер это унылое поделие какой-то авторитетной шишки, ей доверять нельзя, надо всё делать наоборот ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 19:18 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
hVosttmikronОперация синхронна, но надо дать пользователю информацию что программа не подвисла а какй-нибудь прогросс идикатор. В чём проблема: а) сначала показать диалог, затем запустить операцию б) запустить операцию в BackgroundWorker и показывать прогресс бар? Задача стара как мир, за каким дедушкой, объясни мне пожалуйста, тут понадобились таски? Уже который раз задаю один и тот же вопрос. Что то совсем плох стал. Вопрос задаёшь второй раз. Я надеялся ответ очевиден, но видно за отсутствием опыта не для тебя. Ответ: решение моей задачи элегантно, эффективно, компактно. Для проверки: Повтори моё решение предложным тобой методом. Посчитай количество строчек кода. выложи сюда и мы вместе сравним. hVosttmikronТы аргументировал свой позицию не фактами а авторитетом. Это указание на несостоятелность аргумента. Не авторитетом, а первоисточником. Ты перепутал эти понятия и сделал неправильные выводы. Любая попытка аргументировать ссылкой на мнения других людей говорит только о том что своих аргументов у тебя уже нет. Аргумент опять глупый: первоисточники утверждали земля круглая. hVosttmikronОчевидно, запись файла операция не быстрая. Вобще всё это описал в первом посте Запись файла — асинхронная операция. Но судя по всему, раз ты даже таких элементарных вещей не знаешь, о чём мы вообще тогда разговариваем? Если для тебя документация Microsoft «не авторитет», видимо поэтому ты не знаешь таких вещей. Это чушь, ты и сам догадываешся наверно. Ты пытаешься обвинить меня в некомпетентности и дискредитировать как оппонента. Это показывает снова отсутсвие аргументов по делу и делает тебя только крикуном. Это не мой уровень. Хочешь продолжит дискусию, давай по теме. Повтори решение предложным тобой методом. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 21:08 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikron, mikron, И все-таки ContinueWith а то async... await... ЗЫ. Зачeм Тask.Wait? Задача в твоем коде будет гарантировано завершена. На всякий случай? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 21:34 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
refregmikron, mikron, И все-таки ContinueWith а то async... await... ЗЫ. Зачeм Тask.Wait? Задача в твоем коде будет гарантировано завершена. На всякий случай? Получается так. Тask.Wait нужен для проброса исключения. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 21:53 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikronЭто чушь, ты и сам догадываешся наверно. Мда. Не вижу смысла дискутировать с человеком, не знающим самых элементарных вещей, а учить мне тебя нет желания. mikronЭто не мой уровень. Хочешь продолжит дискусию, давай по теме. Повтори решение предложным тобой методом. Мне зачем это? Твоя задача, я тебе дал рабочее решение. Дальше сам борись со своими тараканами. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 21:59 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikronЛюбая попытка аргументировать ссылкой на мнения других людей говорит только о том что своих аргументов у тебя уже нет. Аргумент опять глупый: первоисточники утверждали земля круглая. Просто невероятной тупизны ахинея. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 22:01 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikronПолучается так. Тask.Wait нужен для проброса исключения.Ясно. Но обработку вроде логичнее делать именно в ContinueWith коде. Там для этого спец.механизмы есть. Получается что исключение произошло, и мы ждем закрытия диалогового окна, что бы его пробросить. Ну, пусть так... Сделаем скидку, что пример для демонстрации ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 22:16 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
>mikron, сегодня, 18:11 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1247548&msg=20154719][20154719] >...Страдая дальше вот чего получил... А если так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Не знаю смысла задачи и не совсем понимаю зачем: throw new ApplicationException("Yep!"); С уважением, Владимир ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2017, 22:27 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
mikron, Если я правильно понял, нужно это: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2017, 11:38 |
|
async / await and exception handling
|
|||
---|---|---|---|
#18+
>mikron, вчера, 21:53 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1247548&msg=20155414][20155414] >Получается так. Тask.Wait нужен для проброса исключения. Посмотри на это . С уважением, Владимир ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2017, 13:55 |
|
|
start [/forum/topic.php?all=1&fid=20&tid=1400082]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
others: | 259ms |
total: | 413ms |
0 / 0 |