首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C#异步方法调用一直到Main

C#异步方法调用一直到Main
EN

Stack Overflow用户
提问于 2015-05-26 17:26:19
回答 5查看 8.1K关注 0票数 5

有人能澄清一下这个例子吗?当然,这个例子不起作用:

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同步?我是不是遗漏了什么或者不理解异步等待机制的用法?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30454613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档