gpt4 book ai didi

C#:使用锁会阻塞后面的调用。

转载 作者:行者123 更新时间:2023-11-30 23:17:55 24 4
gpt4 key购买 nike

使用锁,我知道如果有后续调用,后面的调用会一直等到前面的调用结束。如果我不想让后续调用等待并让它跳过该代码块怎么办。

我目前在一台设备上创建一个键盘来监听其他设备的输入。我有一个计时器在 500 毫秒内检查设备的输入。

keyboardTimer = new Timer(500);
keyboardTimer.Elapsed += (sender, e) =>
{
lock (RemoteControlPage.keyboardLock)
{
var keyboardStatus = LauncherClient.Instance.GetKeyboardStatus();

if (keyboardStatus.Visibility == KEYBOARDVISIBILITY.SHOW)
{
//Show keyboard
}
else if (keyboardStatus.Visibility == KEYBOARDVISIBILITY.HIDE)
{
//Hide keyboard
}
else {
Debug.WriteLine("Keyboard = Do Nothing");
}
}
};

在代码中,我有一个锁,以防每次有两个或多个调用进入它。 Elapsed 将再次触发,即使前一个调用未完成处理导致后来的调用等待。有没有办法跳过执行而不是等待上一个调用完成处理。

最佳答案

您可以使用 Monitor类:

keyboardTimer = new Timer(500);
keyboardTimer.Elapsed += (sender, e) =>
{
if (Monitor.TryEnter(RemoteControlPage.keyboardLock))
{
try
{
var keyboardStatus = LauncherClient.Instance.GetKeyboardStatus();

if (keyboardStatus.Visibility == KEYBOARDVISIBILITY.SHOW)
{
//Show keyboard
}
else if (keyboardStatus.Visibility == KEYBOARDVISIBILITY.HIDE)
{
//Hide keyboard
}
else
{
Debug.WriteLine("Keyboard = Do Nothing");
}
}
finally
{
Monitor.Exit(RemoteControlPage.keyboardLock);
}
}
};

关于C#:使用锁会阻塞后面的调用。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41154292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com