async / await
当我遇到以下情况时,我正在玩:
class C
{
private static string str;
private static async Task<int> FooAsync()
{
str += "2";
await Task.Delay(100);
str += "4";
return 5;
}
private static void Main(string[] args)
{
str = "1";
var t = FooAsync();
str += "3";
str += t.Result; // Line X
Console.WriteLine(str);
}
}
我预计结果是“12345”,但结果是“1235”。不知何故,“4”被吃掉了。
如果我将 X 行拆分为:
int i = t.Result;
str += i;
然后是预期的“12345”结果。
为什么会这样?(使用VS2012)