当我在使用 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)