CallContext和ThreadStatic有什么区别?
我已经了解到,在ASP.NET环境中,存储在CallContext中的数据可以在整个请求中持久化,直到它结束为止,而ThreadStatic可能工作,也可能不工作,因为请求可能切换线程。我还了解到,HttpContext是使用CallContext在内部存储的。
在一个常规应用程序中,它们似乎都在同一个线程调用中持久化。这不是什么时候的事吗?
编辑:我在评论中了解到调用上下文是线程静态存储的抽象。ASP.NET框架显式地将数据从一个线程移动到另一个线程,即处理一个请求。其他希望提供线程敏捷性的框架也可以用于上下文存储。
发布于 2008-11-07 19:29:21
通常情况下,请求在整个过程中都会使用相同的线程,但情况并不总是如此-- ASP.NET显示了线程的敏捷性。有一个旧的关于此事的深入博客文章从2005年,但截至.NET 4.5 情况要好得多。
发布于 2008-11-07 19:32:41
存储为ThreadStatic的项可用于多个请求。IIS在请求完成后重用线程来处理后续的请求,甚至可以在处理过程中将请求从一个线程交换到另一个线程。ASP.Net在每次请求之后清除CallContext。
https://stackoverflow.com/questions/273301
复制相似问题