Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
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, 15:25 |
|
||
|
async/await и потеря контекста синхронизации: помогите воспроизвести проблему.
|
|||
|---|---|---|---|
|
#18+
rigor mortis, Не сможешь получить HttpRequest и что-то записать в HttpResponse, так как глобальный объект HttpContext будет равен null. Однако в случае MVC, у тебя будет ссылка на контекст в ContollerContext, так что проблемы особой нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2017, 16:16 |
|
||
|
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() запустит задачу в том же потоке в котором он сам вызывался? То есть по факту никакой многопоточности не будет (смысла нет, но для понимания работы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 13:53 |
|
||
|
|

start [/forum/topic.php?fid=18&gotonew=1&tid=1355473]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 350ms |

| 0 / 0 |
