我如何使用await关键字?

时间:2014-03-02 22:41:38

标签: c# asynchronous async-await

我有以下“测试”方法:

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

我真的会帮助解决这个问题。

2 个答案:

答案 0 :(得分:5)

您的通话方式必须标记为async

public async Task Caller() {
    // this method is marked async
    var test = await userManager.FindByIdAsync("123");
}

asyncawait是一对。如果方法未标记为await,则无法在方法中使用async

答案 1 :(得分:0)

编译器会告诉你什么是错的......

  

'await'运算符只能用于标有'async'修饰符的方法或lambda

'await'运算符只能在中使用 NOT。异步方法用关键字标记,它将从方法返回而不完全完成。

您尝试通过在Method-Call前面添加await关键字来使异​​步同步调用。

您的FindByIdAsync应该包含异步代码并返回Task。

TaskCompletionSource<T>可能对您有所帮助。