Mik*_*son 9 .net c# asp.net iis static-variables
我理解与应用程序(控制台/窗口)相关的静态变量的生命周期,但我不确定我是否在Web应用程序(asp.net,mvc,web api等)的上下文中理解它们的生命周期.
根据我的理解,当IIS回收应用程序池时,静态变量会重置为其类型的默认值(积分= 0,引用类型= null等),但我想知道内联初始化程序是否在回收后重新初始化,或者是类型默认值总是可以分配?
例子):
// example 1
static class StaticRandom
{
private static Random rng = new Random();
}
Run Code Online (Sandbox Code Playgroud)
在上面,当循环后第一次调用时,是否会将静态字段rng重新初始化为新的Random()?或者在尝试使用变量之前是否需要实现空检查,例如:
// example 2
static class StaticRandom
{
private static Random rng = null;
public static Next()
{
if (rng == null)
rng = new Random();
return rng.Next();
}
}
Run Code Online (Sandbox Code Playgroud)
我是否正确假设在IIS回收后,示例1中的rng变量将为null,直到重新初始化为例如示例2?
注意:我完全了解上面示例中的线程安全问题,这只是一个简单的例子来说明我的问题.在上述想法的真实场景中,我将实现适当的锁定模式.
| 归档时间: |
|
| 查看次数: |
5178 次 |
| 最近记录: |