IOptonsMonitor.OnChange и asyn c слушатель в ASP. NET Core - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть класс, зарегистрированный как синглтон. В конструкторе этого класса я подписываюсь на IOptonsMonitor.OnChange:

class Test
{
    public Test(IOptionsMonitor<MyOptions> myOptionsMonitor)
    {
        myOptionsMonitor.OnChange(async options => await SomeWork());
    }

    public async Task SomeWork()
    {
        await Task.Delay(TimeSpan.FromSeconds(30));
    }
}

В этом случае задача SomeWork на самом деле будет «Огонь и забыл», что, вероятно, неправильно. Другой подход заключается в синхронном запуске SomeWork:

myOptionsMonitor.OnChange(options => SomeWork().GetAwaiter().GetResult());

Но в этом случае OnChange будет заблокирован на время выполнения SomeWork.

Какой подход будет более правильным?

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