从访问公共存储的请求线程产生的任务

时间:2013-03-16 12:36:24

标签: asp.net multithreading task httpcontext

我正在研究一些可以被认为是消息总线的代码。一切都很好,直到我开始玩任务。

在我的特定实现中,因为我处于Web上下文中,所以我捎带到HttpContext.Current.Items以在请求的整个生命周期中存储消息,直到我在请求结束时收到消息。正如您可以想象的那样,当我开始使用异步任务时,操作会在其他线程上发生,而我已经发生了故障。

我理解为什么会这样,但我想提出一个解决方案,它不需要我将消息总线传递给每个任务。

我不介意更改实现不使用HttpContext.Current.Items,但语义应该相同。具体来说,我有一个存储在请求的生命周期中的存储,并且从主请求线程生成的线程可以访问。

任何人对我如何做到这一点都有任何想法?

作为一个侧面点,如果一个请求产生了一个日志运行任务,并且该请求在任务完成之前返回,那么如果该任务试图找到该商店,我会认为该商店将为null抛出异常。

0 个答案:

没有答案