同步调用Akavache会导致死锁

时间:2017-11-23 09:44:07

标签: c# asynchronous async-await akavache

我正在尝试使用Akavache的BlobCache.InMemory.GetOrCreateObject将缓存添加到我的一个数据库表中,当我异步调用它时,一切都很好。但由于异步要求调用者也要更改为异步,并且有很多地方需要更改,所以我选择同步调用BlobCache.InMemory.GetOrCreateObject,而不是通过执行以下操作

public async Task<List<T>> GetAllDataAsync() => await BlobCache.InMemory.GetOrCreateObject(...);
public List<T> GetAllData() => GetAllDataAsync().Result;

这会导致死锁。我做错了什么?

Edit1 :此代码在ASP.NET Web API中运行

1 个答案:

答案 0 :(得分:2)

Akavache专为移动和桌面应用程序而设计,在服务器环境中的性能非常差。使用Redis或memcached。