StackExchange.Redis async call hangs

六月ゝ 毕业季﹏ 提交于 2019-12-03 15:04:11

It sounds to me like a sync-context deadlock from mixing Wait and await. Which is why you never do that - (switching into "Gilbert and Sullivan"): well, hardly ever!

If it helps, I suspect that removing the await in the Wait subtree will fix it - which should be trivial since that tree can be replaced with a trivial pass-thru:

public Task<bool> AddAsync(IDatabase db, string key, string value) {
    return db.StringSetAsync(key, value, null, When.NotExists);
}

The important point here is that SE.Redis bypasses sync-context internally (normal for library code), so it shouldn't have the deadlock.

But ultimately: mixing Wait and await is not a good idea. In addition to deadlocks, this is "sync over async" - an anti-pattern.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!