
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
30.07.2017, 15:25
|
|||
|---|---|---|---|
|
|||
async/await и потеря контекста синхронизации: помогите воспроизвести проблему. |
|||
|
#18+
Привет, что-то затруднился. Фрагмент статьи на хабре про асинхронные вызовы: Если вы обязаны ожидать выполнения задачи в одном из этих контекстов, вы можете использовать ConfigureAwait, чтобы сказать системе, что она не должна выполнять фоновую задачу в вашем контексте. Недостатком этого является то, что фоновая задача не будет иметь доступа к тому же самому контексту синхронизации, так что вы потеряете доступ к Windows UI или HttpContext (хотя ваш контекст безопасности всё равно будет у вас). https://habrahabr.ru/post/162353/ Я что-то не очень понимаю в чём здесь может выражаться потеря доступа к HttpContext, на примере ASP.NET MVC. Сделал так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. Где-то на строке 2 должны возникнуть проблемы? Как вообще проиллюстрировать проблему потери доступа к вызывающему контексту после await? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.07.2017, 16:16
|
|||
|---|---|---|---|
async/await и потеря контекста синхронизации: помогите воспроизвести проблему. |
|||
|
#18+
rigor mortis, Не сможешь получить HttpRequest и что-то записать в HttpResponse, так как глобальный объект HttpContext будет равен null. Однако в случае MVC, у тебя будет ссылка на контекст в ContollerContext, так что проблемы особой нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.07.2017, 13:53
|
|||
|---|---|---|---|
|
|||
async/await и потеря контекста синхронизации: помогите воспроизвести проблему. |
|||
|
#18+
hVostt, действительно, свалилось на строке 2: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. А что если такая конструкция: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Здесь в строке 2 не свалится так как в при запуске Task установлена опция TaskScheduler.FromCurrentSynchronizationContext() в строке 3. Значит ли это что Task.Factory.StartNew() запустит задачу в том же потоке в котором он сам вызывался? То есть по факту никакой многопоточности не будет (смысла нет, но для понимания работы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=18&mobile=1&tid=1355473]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
430ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
21ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 703ms |

| 0 / 0 |
