【发布时间】:2012-03-26 07:47:56
【问题描述】:
我们为 WPF(UI) 应用程序创建了 WCF RESTful 服务。 UI 向 WCF 服务发送一个请求,然后该服务调用 BLL 中的合适方法,该方法又调用 DAL 中的方法。所有这些层都已使用 IOC/DI 分离。
现在,对于一项新功能,我们希望在将某种类型的新对象添加到数据库时,它应该经过 3 个步骤,这些步骤将在单独的线程中执行。
也就是说,如果服务向 BLL 发送一个请求,向数据库中添加一个新的对象 OBJ,BLL 应该通过 DAL 将对象保存到数据库中,然后启动一个新线程对对象执行一些操作而不阻塞WCF 请求。
但是每当我们尝试通过在 BLL 中启动一个新线程来这样做时,应用程序就会崩溃。之所以如此,是因为数据库上下文的“InRequestScope”对象已被释放,线程无法更新数据库。此外,WCF 请求在线程完成之前不会结束,尽管已经提供了返回值并且 BLL 方法已经完成了执行。
任何帮助都会很有价值。
【问题讨论】:
标签: multithreading wcf