Mongo`等待FindAsync`没有编译。

时间:2016-02-06 16:51:23

标签: c# mongodb visual-studio-2010 async-await

当我尝试将await关键字与FindAll(filter)方法一起使用时,我最终得到了不可编译的代码。 e.g:

using (var cursor = await collection.FindAsync(filter))
{
    while (await cursor.MoveNextAsync())
    {
        var batch = cursor.Current;
        foreach (var document in batch)
        {
            // process document
            count++;
        }
    }
}

正在给予:

The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task'.

如果我查看源代码,该方法确实返回Task

public static Task<IAsyncCursor<TDocument>> FindAsync<TDocument>(...)

知道这里发生了什么吗?

2 个答案:

答案 0 :(得分:1)

您的功能未标记为异步,不是mongo,而是您的,具有代码的功能。

要在函数内部进行异步调用,必须将该函数标记为async:

public async void YourFunction()
{ 
    //Here you can use await
}

否则你会收到编译错误。

答案 1 :(得分:0)

你的功能应该是异步的。 即

async Task<int> myFunc() 代替 int myFunc ()