【发布时间】:2016-08-20 02:49:28
【问题描述】:
您将在下方看到控制台应用代码。我尝试了两种情况。在第一种情况下,我评论了 await GetProducts() 行。在这种情况下,输出为:
开始时间:13:20:30 工作开始... 结束时间:13:20:30 任务完成...
在第二种情况下,我打开了 await GetProducts 行并注释了 await 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>();
}
}
【问题讨论】:
-
我认为,我的版本对 Web 应用程序非常有用。考虑一个网页,它以 form_load 方法从数据库中加载大型数据集。在这种情况下,页面等待数据库操作。但是在我的版本中,可以在不获取数据集的情况下显示页面。我说的对吗?
-
不,你说的不对。只有在获取数据时才会发出页面。
async在 ASP.NET 中使用 for a different reason。
标签: c# asynchronous async-await