Skip to main content
 首页 » 编程设计

c#之锁定一个简单的属性之它会死锁吗

2024年01月29日30powertoolsteam

问题:

  1. 我可以死锁这段代码吗? IsMouseInside 属性是否线程安全?
  2. 使用复制变量是否有意义?

PS:UI 线程更新 IsMouseInside。另一个线程有时会读取它的值

    public Class Test     
    { 
 
    private readonly object isMouseInsideLocker = new object(); 
    private bool isMouseInside = false; 
 
    public bool IsMouseInside 
    { 
        get 
        { 
            bool copy; 
            lock (this.isMouseInsideLocker) 
                copy = this.isMouseInside; 
            return copy; 
        } 
        set 
        { 
            lock (this.isMouseInsideLocker) 
                this.isMouseInside = value; 
        } 
    } 
 
    private void lblProcessTime_MouseEnter(object sender, EventArgs e) 
    { 
        IsMouseInside = true; 
    } 
 
    private void lblProcessTime_MouseLeave(object sender, EventArgs e) 
    { 
        IsMouseInside = false; 
    } 
} 

请您参考如下方法:

  1. 不,你不能。
  2. 它没有。只需return isMouseInside;