有人可以解释一下这个例子吗?当然,这个例子目前不起作用:
class Program
{
static void Main(string[] args)//main cant' be async
{
int res = test();//I must put await here
Console.WriteLine("END");
}
public async static Task<int> test()
{ //why can't I make it just: public int test()??
int a1, a2, a3, a4;
a1 = await GetNumber1();
a2 = await GetNumber2();
a3 = await GetNumber3();
a4 = a1 + a2 + a3;
return a4;
}
public static async Task<int> GetNumber1()
{
await Task.Run(() =>
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine("GetNumber1");
System.Threading.Thread.Sleep(100);
}
});
return 1;
}
我正在尝试使用"await"从GenNumberX方法中“收集”值。我想以某种方式使方法“test”不是异步的。当我使用await获取值时,我不明白为什么测试必须是异步的。这个例子让我在每个使用异步的方法上编写async,当我向上钻取到Main时,我无法使它成为异步的?
如何编写实际示例:
public bool ReserveAHolliday()
{
bool hotelOK = await ReserveAHotel();//HTTP async request
bool flightOK = await ReserveFlight();////HTTP async request
bool result = hotelOK && flightOK;
return result;
}
如何将方法ReserveAHolliday同步化? 我是不是遗漏了什么或者没有理解异步等待机制的使用方式?
test().Wait()
来同步等待任务。 - Blue