1

我正在研究一些可以被认为是消息总线的代码。在我开始玩 Tasks 之前,一切都运行良好。

在我的特定实现中,当我处于 Web 环境中时,我HttpContext.Current.Items会在请求的整个生命周期内存储消息,直到在请求结束时将消息取出。正如您可以想象的那样,当我开始使用异步任务时,操作发生在其他线程上,而我所拥有的东西却被打破了。

我理解为什么会发生这种情况,但我想提出一个不需要我将消息总线传递到每个任务的解决方案。

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

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

附带说明一下,如果一个请求产生一个日志运行任务并且请求在任务完成之前返回,如果该任务试图找到存储,我会想象存储将是空的并抛出异常。

4

0 回答 0