首页 > 解决方案 > Task.Run(async).Wait() 和同步方法有什么区别?

问题描述

我正在实现播种数据的方法(并在 Startup.Configure() 方法中调用它),它看起来像

if(!_context.Table.Any()) 
{
   _context.Table.Add();
   _context.SaveChanges();
}

我想用Task让它异步,所以我把我的代码改成了这个

Task.Run(async () =>
{
   if(! await _context.Table.AnyAsync()) 
   {
      await _context.Table.AddAsync();
      await _context.SaveChangesAsync();
   }
});

但它没有用。所以我添加Wait()Task.Run()and 方法开始工作。

Task.Run(async () =>
{
   if(! await _context.Table.AnyAsync()) 
   {
      await _context.Table.AddAsync();
      await _context.SaveChangesAsync();
   }
}).Wait();

那么,代码的第一部分和最后一部分之间有什么区别吗?

据我所知,Wait()方法阻塞了线程,那么这些代码部分是否相同?

标签: c#asp.net-coreasynchronous

解决方案


推荐阅读