小编qwe*_*rty的帖子

为什么等待MethodName与等待Task.Run不同?

您将在下面看到控制台应用程序代码.我试过两种情况.在第一种情况下,我评论了等待GetProducts()行.在这种情况下,输出是:

开始时间:13:20:30工作开始...结束时间:13:20:30工作结束了......

在第二种情况下,我打开等待GetProducts行并注释等待Task.Run ...行.在这种情况下,输出是:

开始时间:13:19:33工作开始...工作完成...结束时间:13:19:43

以下是代码行......有什么区别?谢谢...

class Program
{
    static void Main(string[] args)
    {
        Task x = LoadProductsAsync();

        Console.Read();
    }


    private static async Task LoadProductsAsync()
    {
        Console.WriteLine("Start Time: "  + DateTime.Now.ToLongTimeString());

        //await GetProducts();

        await Task.Run(() =>
        {
            GetProducts();
        });

        Console.WriteLine("Finish Time: " + DateTime.Now.ToLongTimeString());
    }

    private static Task<List<Product>> GetProducts()
    {
        return Task.Factory.StartNew(
            () => GetProductsByCategory()
        );
    }

    private static List<Product> GetProductsByCategory()
    {
        Console.WriteLine("Job started...");

        System.Threading.Thread.Sleep(10000);

        Console.WriteLine("Job finished...");

        return new List<Product>();

    }
}
Run Code Online (Sandbox Code Playgroud)

c# asynchronous async-await

3
推荐指数
1
解决办法
136
查看次数

标签 统计

async-await ×1

asynchronous ×1

c# ×1