gpt4 book ai didi

c# - HttpContext.Current 如何在多线程环境中工作?

转载 作者:可可西里 更新时间:2023-11-01 08:18:59 25 4
gpt4 key购买 nike

所以我想知道当(据我所知)asp.net 是多线程时,asp.net 究竟是如何能够限定静态属性的范围的。

  • 一种理论认为 ASP.NET 人员为每个请求维护一个不同的应用程序域......但这似乎不可行。
  • 另一种理论认为,.Current 方法查看当前线程,然后使用它在某些哈希表(或其他静态存储机制)中查找 http 上下文。

无论哪种方式,这都是一种看起来非常有用的技术......我想利用它,但绝对不想调试共享状态错误:-/

最佳答案

它不是每个请求的 AppDomain。如果你想使用线程特定的状态,尝试:

[ThreadStatic]
private static int foo;
public static int Foo {get {return foo;} set {foo = value;}}

每个线程现在都有自己的 Foo 值(或者更确切地说:'foo')。

不能轻易使用 - 它确实有成本,但它是在每个线程的基础上共享状态的有效方式。我用过一次,也许两次 - 我写了很多 C#。不要过度使用它...

尤其要注意初始化问题(即忘记执行),并记得自己清理等。如果您使用任何异步代码,请非常小心,因为任何回调/ worker /等将有不同的状态。

关于c# - HttpContext.Current 如何在多线程环境中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1561036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com