使用 2.0 驱动程序,以下代码有时会挂起并且永远不会返回。
public async Task<T> GetFirst(FilterDefinition<T> query)
{
return await GetCollection.Find(query).FirstOrDefaultAsync();
}
如果我首次亮相并在返回线上设置断点,一切都会恢复正常。在 shell 中运行的查询如下所示:
db.Customers.find({"Name" : /test$/i})
有2种解决方案:
-
Add a 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();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)