![](/img/trans.png)
[英]How to properly update the ObservableCollection from another thread?
[英]How to update database from another thread
在我的 Asp.net Core 项目中,我使用 Backgroundworker 来执行非常耗时的过程。 工作人员完成后我想更新数据库。 与数据库的连接是通过依赖注入注入的。
我收到以下错误:
System.ObjectDisposedException:“无法访问已处置的 object。此错误的一个常见原因是处置从依赖项注入解析的上下文,然后尝试在应用程序的其他位置使用相同的上下文实例。如果您调用 Dispose,则可能会发生这种情况() 在上下文中,或者将上下文包装在 using 语句中。如果你使用依赖注入,你应该让依赖注入容器处理上下文实例。”
原因是我的主线程在后台工作人员完成之前已经返回了一个 ActionResult 并且可以通过这种方式完成。 但是与数据库的连接被释放了。
现在有没有办法防止依赖注入处理?
我已经尝试克隆数据库连接,但我得到了同样的错误。
没有。 恭喜。 您发现了使用依赖注入获取数据库连接不起作用的情况。 时期。 这是流程设计的一部分——ASP:nET Core 中的 DI 与请求的生命周期相关,而后台工作者……不是。 选择?
无法避免处置,因为这基本上是一种基本情况。 它在请求后在那里清理。
你读过https://learn.microsoft.com/en-us/do.net/architecture/microservices/multi-container-microservice.net-applications/background-tasks-with-ihostedservice 了吗? 那一个谈论在内部实现微服务。 这允许在这些托管服务上使用依赖注入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.