Pan*_*ndi 5 .net c# asynchronous async-await
我需要在没有await运算符的情况下获取返回值(在下面的示例中,我需要"hello world"在var y没有await运算符的情况下获取).因为一个方法被引用到很多地方.但我的要求是对于特定操作异步执行方法.没有其他时间它足以同步执行.
如果我在所有引用的位置等待,方法需要更改为异步,并且引用的方法需要更改为async和await.是否有可能获得返回值?
请在下面找到示例代码段:
class Program
{
static void Main(string[] args)
{
var x = getString();
}
public static async Task<string> getString()
{
var y = await GetString2();
return y;
}
public static async Task<string> GetString2()
{
return "hello world";
}
}
Run Code Online (Sandbox Code Playgroud)
在
var y没有等待运算符的情况下,有没有可能获得"hello world"字符串?
我不会使用 Result 因为如果抛出错误,你会得到 AggregateException。最好这样做:
var str = GetString2().GetAwaiter().GetResult()
你在找类似的东西吗?
var str = GetString2().Result;
Run Code Online (Sandbox Code Playgroud)
Result阻塞调用线程,直到异步操作完成; 它等同于Wait方法.await异步等待任务完成.
另外,正如@Sir Rufo和@MistyK所描述的那样,你会遇到AggregateException一个可能的异常,所以最好这样使用GetAwaiter;
var str = GetString2().GetAwaiter().GetResult();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
969 次 |
| 最近记录: |