使用2.0驱动程序时,以下代码有时会挂起且永远不会返回。
public async Task<T> GetFirst(FilterDefinition<T> query)
{
return await GetCollection.Find(query).FirstOrDefaultAsync();
}
如果我在返回代码的行上设置断点,一切都会正常返回。在 shell 中运行的查询大致如下:
db.Customers.find({"Name" : /test$/i})
使用2.0驱动程序时,以下代码有时会挂起且永远不会返回。
public async Task<T> GetFirst(FilterDefinition<T> query)
{
return await GetCollection.Find(query).FirstOrDefaultAsync();
}
如果我在返回代码的行上设置断点,一切都会正常返回。在 shell 中运行的查询大致如下:
db.Customers.find({"Name" : /test$/i})
Add a ConfigureAwait(false)
at the end:
return await GetCollection.Find(query).FirstOrDefaultAsync().ConfigureAwait(false);
Just return the Task<T>
, since the result of FirstOrDefaultAsync()
is the same type as the result you want to return.
public Task<T> GetFirst(FilterDefinition<T> query)
{
return GetCollection.Find(query).FirstOrDefaultAsync();
}
GetFirst()
的?你是使用类似于GetFirst(query).Result
这样的方式吗? - svick