使用2.0驱动程序时,以下代码有时会挂起并且永远不会返回。
public async Task<T> GetFirst(FilterDefinition<T> query)
{
return await GetCollection.Find(query).FirstOrDefaultAsync();
}
如果我首次亮相并在回程线上放置一个断点,一切都会正常返回。在shell中运行的查询是这样的:
db.Customers.find({"Name" : /test$/i})
答案 0 :(得分:7)
有两种解决方案:
在最后添加ConfigureAwait(false)
:
return await GetCollection.Find(query).FirstOrDefaultAsync().ConfigureAwait(false);
只需返回Task<T>
,因为FirstOrDefaultAsync()
的结果与您要返回的结果的类型相同。
public Task<T> GetFirst(FilterDefinition<T> query)
{
return GetCollection.Find(query).FirstOrDefaultAsync();
}