如何使用参数和返回值等待异步任务方法?

时间:2016-11-21 00:57:44

标签: c# asynchronous async-await task

我在这里找到了这样的代码的一部分:

string stringExample = "";

async private Task myMethod (int MyNumber)
{
    var myString = await getStringFromIntAsync(myNumber);
    stringExample = myString;
}



private main()
{
    var t = Task.Run(async () => {await myMethod(123456);});
    t.Wait();
}

这对我有用。 但现在是我的问题:我如何等待具有这样的返回值的异步任务方法:

async private Task<string> myMethod (int MyNumber)
{
    var myString = await getStringFromIntAsync(myNumber);
    return myString;
}

我尝试使用Task.Run()但它不起作用。

感谢Agredo

1 个答案:

答案 0 :(得分:0)

如果你想只是普通阻止,那么你可以用GetAwaiter().GetResult()

来做到这一点
private main()
{
    myMethod(123456).GetAwaiter().GetResult();
}

如果myMethod返回值:

private main()
{
    var result = myMethod(123456).GetAwaiter().GetResult();
}

请注意,阻止异步代码是一种反模式,应该在实际代码中避免使用。此规则的一个值得注意的例外是控制台应用程序的Main方法。