|
Подскажите по Task
|
|||
---|---|---|---|
#18+
Доброе время. На форме кнопке, по ее нажатию должен быть выполнен запрос к БД и по его выполнению отобразиться message с уведомлением. Метод на кнопке: Код: c# 1. 2. 3. 4. 5. 6. 7.
Запрос выполняется асинхронно и отображается сообщение, но с каждым кликом кол-во сообщений инкрементируется. Как пофиксить? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2017, 23:49 |
|
Подскажите по Task
|
|||
---|---|---|---|
#18+
csprogrammist, Плохая практика использовать await вместе ContinueWith. Что возвращает Db.Send() ? Есть ли у Db.Send модфикатор async? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2017, 07:27 |
|
Подскажите по Task
|
|||
---|---|---|---|
#18+
refreg, Пробовал разные варианты, в последнем оставил await Сигнатура Send: public void Send (InputData data). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2017, 09:24 |
|
Подскажите по Task
|
|||
---|---|---|---|
#18+
csprogrammist, await по сути, для того и нужен, чтоб не писать всю цепочку методов ContinueWith и бла бла бла. потом всё разворачивается в тот же самый код, если вы выполняете код из СurrentSynchronizationContext то какой смысл дёргать диспатчер? для асинхронных вызовов в клиентах БД есть Async методы ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2017, 09:32 |
|
Подскажите по Task
|
|||
---|---|---|---|
#18+
Roman Mejtes, Я уже просто перебирать начал варианты. У этого клиента нет асинхронных вызовов ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2017, 10:13 |
|
Подскажите по Task
|
|||
---|---|---|---|
#18+
csprogrammistRoman Mejtes, Я уже просто перебирать начал варианты. У этого клиента нет асинхронных вызововХотя в этом примере написано не совсем по канону (await здесь ожидает когда ты кнопку нажмешь, а не когда метод выполниться), не ясно почему задвоенность. По этому коду вроде задвоенностей быть не должно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2017, 10:26 |
|
Подскажите по Task
|
|||
---|---|---|---|
#18+
Как-то оно через непонятно что сделано. Создайте метод, который возвращает true при том как нет ошибок, внутри него Task.Run(() => {бла-бла-бла}), также выбрасывайте ошибки по throw и возвращайте false при ошибке А в обработчике уже await метода - и обработка булевой переменной. А эти все await + ContinueWith - оставьте в покое. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2017, 10:55 |
|
Подскажите по Task
|
|||
---|---|---|---|
#18+
hoolygan, имхо, но лучше сделать асинхронный метод обёртку, над методом клиента который будет возвращать таск, а потом делать по класической схеме. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2017, 11:25 |
|
Подскажите по Task
|
|||
---|---|---|---|
#18+
Roman Mejtes, А что это изменит? Будет 2-ное вложение - таска будет вызывать таску тогда - и больше проблем с обработкой ошибок. А может я не правильно понял это выражение "асинхронный метод обёртку, над методом клиента который будет возвращать таск". Но суть в том, что ТС плавает в тасках, не до конца понимая что это и с чем его едят. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2017, 11:30 |
|
Подскажите по Task
|
|||
---|---|---|---|
#18+
hoolygan, автор пишет, что клиент которым он пользуется не содержит ассихронных методов. Я предлагаю создать асинхронный метод "блаблаAsync", который будет реализовывать 1 часть кода автора, потом через await дергать этот метод, а всё, что в ContinueWith пихать ниже. Возвращать True\False в случаи выполнения или ошибки это Bad practices. Метод должен возвращать то, что должен либо ничего. А за обработку должен отвечать TryCatch, а не результаты метода ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2017, 11:36 |
|
Подскажите по Task
|
|||
---|---|---|---|
#18+
тогда вообще не проблема Код: 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.
так... на коленке ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2017, 11:58 |
|
|
start [/forum/topic.php?fid=20&fpage=45&tid=1399956]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 161ms |
0 / 0 |