|
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 |
|
|
start [/forum/topic.php?fid=20&msg=39393261&tid=1400082]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 295ms |
total: | 442ms |
0 / 0 |