繁体   English   中英

空只读锁定对象

[英]Null readonly lock object

静态只读对象如何变为null? (我已将_lock对象设置为静态对象,而不是静态对象,但始终为只读。)

validate方法可以正常运行几次,然后调用2-3次后,_lock对象为null。 这是否表明该锁由另一个线程拥有?

在此处输入图片说明

除了反思,另一个的方式, 这种 (更具体地说,在通过初始分配一个静态变量空引用除外)可以出现的情况是,如果你在你的类别处定义的静态构造函数,由于某种原因将值设置为空,如:

class Program
{
    class A
    {
        private static readonly object _lock = new object();

        public void Validate()
        {
            lock (_lock) // NullReferenceException here...
            {
                Console.WriteLine("Not going to make it here...");
            }
        }

        static A()
        {
            Console.WriteLine(_lock.ToString());
            Console.WriteLine("Now you can see that _lock is set...");
            _lock = null;
        }
    }

    static void Main(string[] args)
    {
        var a = new A();
        a.Validate();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM