2
我偶然發現了異步等待的奇怪行爲。異步等待的異步行爲
示例代碼:
public class foo
{
public async static Task<myobj> method1()
{
var result = await method2();
return result;
}
private async static Task<myobj> method2()
{
// omitted for brevity.
}
}
public class bar
{
public void caller()
{
var result = foo.method1().Result;
pass(result);
}
}
這凍結UI。解決方案是在caller()上實現異步等待。
但是這個怎麼樣:
public class foo
{
public static myobj method1()
{
var result = method2().Result;
return result;
}
private async static Task<myobj> method2()
{
// omitted for brevity.
}
}
public class bar
{
public void caller()
{
var result = foo.method1();
pass(result);
}
}
這種自由的工作。
私人電話與其他類別的上行方法有什麼不同?
確切的情況在這裏描述:http://blog.stephencleary.com/2012/07/dont-block-on-async-code.html – Noseratio