有人能澄清一下这个例子吗?当然,这个例子不起作用:
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方法中”收集“值。我想以某种方式使方法“测试”而不是异步。我不明白为什么当我使用await来获取一个值时,测试必须是异步的。这个示例让我在使用异步的每个方法上编写异步,当我向上钻取到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同步?我是不是遗漏了什么或者不理解异步等待机制的用法?
https://stackoverflow.com/questions/30454613
复制相似问题