Using lock( ) C#

本文关键字:lock Using | 更新日期: 2023-09-27 18:36:33

为什么这个锁不工作?

CheckActivity 由 Mouse/Keyboard Windows 挂钩生成。任何提示如何使此锁工作?

    private void CheckActivity(KeyboardMouseKey k)
    {
        lock(this)
        {
            if (_map)
            {
                _map = false;
                if (openFileDialogSelectAudio.ShowDialog() == DialogResult.OK)
                    MapSound(k, openFileDialogSelectAudio.FileName);
            }
            else
            {
                ///play
                foreach (var m in _mappings.Where(m => m.Key.Equals(k)))
                    m.Value.Play();
            }
            UpdateGui();
        }
    }

Using lock( ) C#

您正在使用lock(this) .

如果在不同的对象上调用检查活动,lock(this) 不会阻止确保只有一个线程在执行检查活动(这似乎是锁的目的)

对静态对象使用 lock 使其正常工作。

例:

 private static readonly object lockObj = new object();
 ...
 lock(lockObj)
 {
  ....

 }