Я использую веб -API ASP.net Core 3.1. Мне нужно выполнить дополнительное действие в фоновом режиме, когда я получаю вызов методу действия контроллера, не добавляя слишком большую задержку в обработку текущего действия. Дополнительная деятельность, которую я выполняю, - это подготовка некоторых данных в кэш, поэтому он доступен до того, как пользователь выполнит следующий шаг. Поэтому я хочу просто запустить это действие, не дожидаясь его завершения. Но в то же время я не хочу, чтобы задача была утилизирована без завершения, просто потому, что метод действия завершил обработку ИТ, возвращенный ответ обратно в абонент и переходный контроллер был утилизирован. Но сама задача может включать необходимость использования переходной службы. Таким образом, вместо того, чтобы непосредственно вводить переходную службу в Singleton Service, я думаю, что инъекция переходной службы в контроллер. А затем в методе действия я передам переходную службу в качестве параметра асинхронному методу в службе Singleton, а затем в рамках этого метода, вызовуте требуемую службу. < /P>
public IActionResult GetSomething(string input1)
{
var resp = await _transientService1.GetSomethingElse(input1);
// I am not awaiting this task
var backgroundTask = _singletonService1.DoSomethingAsync(_transientService2, resp.someattr);
return Ok(resp);
}
< /code>
Теперь в службе Singleton я получу необходимые данные и напишу в кеш. < /p>
public async Task DoSomethingAsync(ITransientService2 myTransientService2, string someParam)
{
var temp1 = await myTransientService2.GetSomethingNew(someParam);
var temp2 = await _SingletonService2.WriteCache(temp1);
}
< /code>
Поэтому я хотел знать прежде всего, если этот подход сработает. Если это работает, каковы ловушки или Gotchas, о которых мне нужно знать. < /P>
В настоящее время это все концептуально. Иначе я бы попробовал это напрямую

Отсюда и вопросы.
Подробнее здесь:
https://stackoverflow.com/questions/681 ... on-service