问题
using the 2.0 driver the following code will sometimes hang and never return.
public async Task<T> GetFirst(FilterDefinition<T> query)
{
return await GetCollection.Find(query).FirstOrDefaultAsync();
}
if I debut and put a break point on the return line, everything returns normally. In the shell the query being run is something like this:
db.Customers.find({"Name" : /test$/i})
回答1:
There are 2 solutions:
Add a
ConfigureAwait(false)
at the end:return await GetCollection.Find(query).FirstOrDefaultAsync().ConfigureAwait(false);
Just return the
Task<T>
, since the result ofFirstOrDefaultAsync()
is the same type as the result you want to return.public Task<T> GetFirst(FilterDefinition<T> query) { return GetCollection.Find(query).FirstOrDefaultAsync(); }
来源:https://stackoverflow.com/questions/29656923/c-sharp-mongo-firstordefaultasync-hangs