Синхронные и асинхронные методы в web.api - PullRequest
0 голосов
/ 08 сентября 2018

Может кто-нибудь объяснить, является ли этот код потенциальным тупиком. Смешивание вызовов базы данных синхронизации с асинхронными вызовами базы данных, как показано ниже. Или, если асинхронный вызов был выполнен первым, это риск тупика.

    [Route("{id}/someobjects")]
    [ResponseType(typeof(IEnumerable<SomobjectDto>))]
    public async Task<IHttpActionResult> GetSomeobjects(string id)
    {
        var syncMethodResult = SyncDBCallMethod(); //In this method there is a databas call..

        var asyncMethodresult = await AsyncDBMCallMethod(1L);  //In this method there is a Async databas call..

1 Ответ

0 голосов
/ 08 сентября 2018

В этом случае асинхронный вызов AsyncDBMCallMethod не начнется, пока не завершится синхронный SyncDBCallMethod.

Если вы не смешиваете блокирующие вызовы, такие как Result или .Wait, в асинхронных / ожидающих функциях и, соответственно, ожидаете асинхронных функций, у вас должна быть возможность выполнять асинхронные и синхронизирующие вызовы вместе.

Ссылка Async / Await - Лучшие практики в асинхронном программировании

...