c# - 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 - 获取由 C 中的 AST 生成的树 ( String ) 输出的解决方案
- arrays - 查找数组中无序的对数
- c - C指针中的奇怪行为
- java - Java BigDecimal long 带十进制转换
- javascript - ClassName.variable 总是静态成员变量吗?
- flutter - Flutter:如何在 GetX 上监听变量变化
- database - FutureBuilder 和 ListView.builder
- html - Bootstrap Grid - 在 div 中获取文本和图像之间所需的间距/填充的问题
- flatpickr - Livewire 和 Flatpickr - 重新渲染后失败
- python - 我正在尝试创建一个在没有 CSV 模块的情况下读取 CSV 文件的函数,但遇到格式错误