我们在代码中发现了一个错误,我们认为这与竞争条件有关,但我们不明白为什么会发生这种情况。我们有以下代码
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值可用,或者我们的假设不正确?