当我尝试将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>(...)
知道这里发生了什么吗?
答案 0 :(得分:1)
您的功能未标记为异步,不是mongo,而是您的,具有代码的功能。
要在函数内部进行异步调用,必须将该函数标记为async:
public async void YourFunction()
{
//Here you can use await
}
否则你会收到编译错误。
答案 1 :(得分:0)
你的功能应该是异步的。 即
async Task<int> myFunc()
代替
int myFunc ()