Cha*_*dit 3 .net c# mongodb async-await mongodb-.net-driver
使用2.0驱动程序,以下代码有时会挂起并永远不会返回.
public async Task<T> GetFirst(FilterDefinition<T> query)
{
return await GetCollection.Find(query).FirstOrDefaultAsync();
}
Run Code Online (Sandbox Code Playgroud)
如果我首次亮相并在回程线上设置一个断点,一切都会恢复正常.在shell中运行的查询是这样的:
db.Customers.find({"Name" : /test$/i})
Run Code Online (Sandbox Code Playgroud)
有两种解决方案:
最后添加一个ConfigureAwait(false):
return await GetCollection.Find(query).FirstOrDefaultAsync().ConfigureAwait(false);
Run Code Online (Sandbox Code Playgroud)只需返回Task<T>,因为结果与FirstOrDefaultAsync()您想要返回的结果类型相同.
public Task<T> GetFirst(FilterDefinition<T> query)
{
return GetCollection.Find(query).FirstOrDefaultAsync();
}
Run Code Online (Sandbox Code Playgroud)