Как асинхронно инициализировать ресурс - PullRequest
0 голосов
/ 21 мая 2018

У меня есть Task<ISomething>, который должен быть общим для всех клиентских потоков.Также у меня есть класс Worker, который создается один раз для запроса - services.AddScoped<Worker>().

Как правильно инициализировать ISomething в моем асинхронном коде, не создавая его несколько раз?

Если ресурс находится в стадии разработки (вызов веб-службы), другие запросы должны асинхронно ждать его завершения и затем продолжаться.Также блокировка не является опцией AFAIK.AsyncLazy хорошая идея?

1 Ответ

0 голосов
/ 21 мая 2018

Задание можно ожидать столько раз, сколько вам нужно.

В этом конкретном случае, поскольку задание будет выполняться большую часть времени, ValueTask<T> будет лучшим выбором.

Я не упоминаю подробности создания ISomething, но вы можете добавить ValueTask<T> в большинство контейнеров DI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...