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();
}
}
您正在使用lock(this)
.
如果在不同的对象上调用检查活动,lock(this) 不会阻止确保只有一个线程在执行检查活动(这似乎是锁的目的)
对静态对象使用 lock
使其正常工作。
例:
private static readonly object lockObj = new object();
...
lock(lockObj)
{
....
}