我有以下“测试”方法:
public async Task<TitaniumUser> FindByIdAsync(string userId)
{
long id;
if (!long.TryParse(userId, out id))
return null;
return new TitaniumUser(id);
}
我称之为:
var test = await userManager.FindByIdAsync("123");
但我收到以下消息:
'await'运算符只能用于标有'async'修饰符的方法或lambda
我真的会帮助解决这个问题。
答案 0 :(得分:5)
您的通话方式必须标记为async
:
public async Task Caller() {
// this method is marked async
var test = await userManager.FindByIdAsync("123");
}
async
和await
是一对。如果方法未标记为await
,则无法在方法中使用async
。
答案 1 :(得分:0)
编译器会告诉你什么是错的......
'await'运算符只能用于标有'async'修饰符的方法或lambda
'await'运算符只能在中使用 NOT。异步方法用关键字标记,它将从方法返回而不完全完成。
您尝试通过在Method-Call前面添加await关键字来使异步同步调用。
您的FindByIdAsync应该包含异步代码并返回Task。
TaskCompletionSource<T>
可能对您有所帮助。