尝试找出这段代码为什么会卡住。我可以删除测试底部的任何一行,它就不会卡住,但是三行都在一起就会卡住。非常感谢任何帮助!
[Fact]
public async Task CanAddValuesInParallel() {
var muxer = ConnectionMultiplexer.Connect("localhost");
var db = muxer.GetDatabase();
await AddAsync(db, "test", "1");
await db.KeyDeleteAsync("test");
Task.Run(() => AddAsync(db, "test", "1")).Wait();
}
public async Task<bool> AddAsync(IDatabase db, string key, string value) {
return await db.StringSetAsync(key, value, null, When.NotExists);
}
Task.Run
,以及为什么要使用Wait()
? - i3arnonTask.Run(() => AddAsync(db, "test", "1")).Wait();
这里。这里发生了死锁。 - Hamlet HakobyanSynchronizationContext
。当混合同步和异步代码时,这可能会导致许多问题。我怀疑您正在看到我在两篇博客文章中描述的一些问题的组合此处和此处。 - Stephen Cleary