这是使用 MongoDb C# Driver 2.2
新的 C# 驱动程序是异步的。不管喜欢与否,都应该处理。将来会派上用场。但现在...
在下面的代码中,异步调用实际上是同步的,因为代码“result.GetAwaiter().GetResult();”。这使得异步代码在正常流程中最终执行。
static void MongoGoNow()
{
IMongoCollection<ClassA> collection = db.GetCollection<ClassA>(Collection.MsgContentColName);
var result = TestFind(collection);
result.GetAwaiter().GetResult();
//What's next???
}
static async Task TestFind(IMongoCollection<ClassA> MyCollection)
{
var filter = new BsonDocument();
var count = 0;
using (var cursor = await MyCollection.FindAsync(filter))
{
while (await cursor.MoveNextAsync())
{
var batch = cursor.Current;
foreach (var document in batch)
{
// process document
count++;
}
}
}
您还可以合并 Main 方法中的最后两行代码,如下所示:
static void MongoGoNow()
{
IMongoCollection<ClassA> collection = db.GetCollection<ClassA>(Collection.MsgContentColName);
TestFind(collection).GetAwaiter().GetResult();
//What's next???
}