簡體   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