我只是,为了粗略的草案,使用以下模式将大量数据访问方法转换为异步,并且它看起来太简单,不适合以后的迭代.它有多安全,缺少什么,我应该怎么做?
提供长时间呼叫的服务:
private class UserService { public IdentityUser GetById(int id) { ... } } private UserService _userService = new UserService();
原始的同步方法:
public IdentityUser GetById(int id) { return _userService.GetById(id); }
我奇妙的新异步方法:
public async Task<IdentityUser> GetByIdAsync(int id) { await Task.Run(() => _userService.GetById(id)); }
解决方法
你不应该像这样做“假异步”方法:
public async Task<IdentityUser> GetByIdAsync(int id) { await Task.Run(() => _userService.GetById(id)); }
我称之为“假异步”的原因是因为没有任何关于操作的内在异步.在这种情况下,您应该只有同步方法.如果调用者想通过使用Task.Run使其异步,他可以这样做.
什么时候本质上是异步的?当您向Web服务或数据库发出请求时,例如,在发送请求和接收响应之间存在等待时间 – 请求是本质上异步操作.要避免阻塞调用线程,请使用async-await.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。