从异步方法中,是否正在调用LINQ查询的ToList,而不是ToListAsync,这可能会导致死锁?

永在

我有一种情况,我需要非同步运行单个LINQ查询。原因:目前,异步EF调用如何加载较大的Blob仍然存在错误(有关Entity Framework异步操作的详细信息,其完成时间是原来的十倍

因此,解决上述错误的方法是将查询转换为自定义DbCommand并异步运行原始SQL,或者我可以将调用从ToListAsync更改为ToList

TLDR ---问题:我知道同步调用异步代码会导致死锁(例如query.ToListAsync().Result),但是,在异步方法内部调用ToList的非异步版本是否会遇到相同的问题?

毫米8

我知道同步调用异步代码会导致死锁(例如query.ToListAsync().Result),但是,调用ToList异步方法内部的非异步版本是否会遇到相同的问题?

调用类似的同步方法会ToList()阻塞当前线程,而不管您是否在打算异步的方法中进行操作。因此它不会死锁,但会阻止调用方法。而且您不希望异步发生阻塞。请记住,一个async方法会像其他任何方法一样同步运行,直到遇到为止await

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

任务异步调用不返回会导致死锁

来自GoogleAuthUtil(Android中的Google Plus集成)的“从主线程调用此代码可能会导致死锁和/或ANR,同时获取accesToken”。

为什么在Windows Service中阻止异步会导致死锁?

异步等待导致死锁

Oracle 表上的共享索引是否会导致死锁?

这种方法是否可能导致死锁?我该如何预防?

为什么此控制台应用程序中的异步等待模式会导致死锁?

如果不一定要在其他线程上执行异步调用,阻塞异步调用怎么会导致死锁?

导致死锁的异步/等待示例

重用Go通道会导致死锁

在调度之间检测到状态突变,在路径 `...` 中。这可能会导致不正确的行为

在Firebird脚本中创建表会导致死锁导致“元数据更新失败”

VM正在使用latin1的本机名称编码运行,这可能会导致Elixir如预期的那样发生故障

for循环导致死锁

Nodemon这可能会导致较高的cpu使用率。减少使用--watch

[Vue警告]:检测到重复的密钥:x。这可能会导致更新错误

无法修复警告检测到重复键:“ 0”。这可能会导致更新错误

已经需要Thor。这可能会导致Bundler发生意外故障

为什么此异步/等待代码不会导致死锁?

.Net中的Dictionary可能在并行读写它时导致死锁?

丢弃过滤的统计信息会导致死锁

在systemd服务内部启动systemd服务会导致死锁

此“同步”代码会导致死锁吗?

输出流中先前电流的非单调DTS更改为这可能会导致输出文件中的时间戳不正确

[Vue警告]:检测到重复的密钥:x。这可能会导致更新错误。如何防止添加已通过方法添加的项目

Ag-grid:从getRowNodeId回调中检测到重复的节点ID 107,这可能会导致网格出现问题

如何有效替换字符串中的字符,这可能会重复

为什么从Actix Web处理程序内的Rusoto S3流中读取会导致死锁?

linux信号处理程序中的malloc导致死锁

TOP 榜单

热门标签

归档