c# - 修改存储在 AsyncLocal 中的对象
问题描述
在 C# Cookbook中有关于AsyncLocal in Concurrency 的声明:
您应该只将不可变数据存储在 AsyncLocal 中。
同时我研究了HttpContextAccessor 实现,我看到它是基于AsyncLocal
. 在ASP.NET Core
应用程序中,我可以修改HttpContext
接收自HttpContextAccessor
(例如,我可以将一些数据放入HttpContext.Items
或添加自定义标头HttpContext.Response.Headers
)。
修改存储在 中的对象有什么问题AsyncLocal
?为什么它可以HttpContextAccessor
以防万一?
解决方案
据我了解,要点是可以从不同的线程访问 AsyncLocal(您可以在此答案中找到示例)。
对于这种情况,推荐使用不可变数据是一种常见的推荐方式。
推荐阅读
- r - 如何在气泡图中绘制 vendiagram 元素?
- angular - 使用 Angular8 实现 ngx-spinner 时出错
- excel - 从 SheetBeforeDoubleClick 事件中排除范围
- javascript - html 指向图片时,它会变成灰色并带有可选文本
- c++ - 为什么`向量
五; for(auto&& e:v){e=false}` 编译(即元素的值可以修改)而vector的ref 是prvalue? - azure - 用于读取/写入静态文件的 Azure 路径
- version-control - 将本地文件与其在 Phabricator/Arcanist 修订版上的版本进行比较
- java - 如何制作评论标志而不是评论标志
- python - sanic-validation Python AttributeError:'Request'对象没有属性'raw_args'
- assembly - 交换位置 (HC11)