C # Async Ожидание не завершается - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть то, что я считаю довольно простым потоком в асинхронном контроллере веб-API.Код выглядит следующим образом:

public async Task<IHttpActionResult> Put([FromBody] ObjectType myObject)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    try
    {
        this.callbasicMethod();
        myObject = await myRepository.UpdateDB(myObject);
        await myRepository.DeleteSomeStuff(myObject.someProperty);
        var table = Helper.CreateDataTable(myObject.anotherProperty);
        await myRepository.InsertSomeStuff(table);
        returnOk(myObject);
    }
    catch (Exception ex)
    {
        return BadRequest(ex.Message);
    }
}

Проблема в том, что ни один из вызовов базы данных (важно, вызов обновления) никогда не выполняется.Если я ставлю точку останова в этом методе вокруг вызова обновления, все работает просто отлично.Это похоже на какое-то состояние гонки или что-то подобное.Пожалуйста, дайте мне знать, если у вас есть идея, как решить эту проблему или что я делаю неправильно.

Кроме того, пожалуйста, дайте мне знать, если вам нужны какие-либо разъяснения, мне пришлось явно запутывать код, чтобы защитить интеллектуальную собственность компании, в которой я работаю.Если это помогает, вызываемые методы сами внедряются асинхронно, вызывая асинхронные изящные методы для связи с базой данных.

1 Ответ

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

Я наконец нашел способ обойти, но не верный ответ, почему.По сути, два вызова базы данных, которые вызывались, заключались в том, чтобы удалить некоторые данные из таблицы, а затем, после того, как это было сделано, добавить некоторые данные в ту же таблицу.Я написал одну хранимую процедуру для обработки этого, а затем один метод на уровне данных моего приложения, и теперь все работает.

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