与等待等待的不同行为

时间:2017-09-05 09:02:54

标签: c# asynchronous async-await wait

我们在代码中发现了一个错误,我们认为这与竞争条件有关,但我们不明白为什么会发生这种情况。我们有以下代码

private static async Task<bool> IsMigrationPending(DependencyContainer dependencies)
{
    bool isMigrationPending = false;
    await WithCacheLock(MyRedisKey, dependencies, async () =>
    {
        isMigrationPending = await MyFunction();

        LogMessage($"isMigrationPending = {isMigrationPending}").wait();
        return isMigrationPending;
    });
    return isMigrationPending;
}

尽管MyFunction()返回true方法IsMigrationPeding,但我们调用它的大部分时间都返回false。 Chanigng代码行LogMessage($“isMigrationPending = {isMigrationPending}”)。wait()to

Await LogMessage($"isMigrationPending = {isMigrationPending}")

然后它修复了问题,返回了预期值。对我们而言,改变等待等待解决我们的问题是没有意义的。我们期望wait会阻止执行,直到isMigrationPending值可用,或者我们的假设不正确?

0 个答案:

没有答案