- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有以下代码,它基于 Monitor class example on the msdn website .
private void WebRefresh_Click(object sender, EventArgs e)
{
if (WebRefresh.Enabled)//Only call from button
{
if (System.Threading.Monitor.TryEnter(deployIsRunning))
{
refreshWebVersion();
System.Threading.Monitor.Exit(deployIsRunning);
}
}
khác
{
MessageBox.Show("You cannot refresh during a deploy");
}
}
代码抛出 SynchronizationLockException在带有错误消息的 Monitor.Exit() 调用上:“从未同步的代码块调用了对象同步方法。”错误的解释是我试图释放一个不属于我的互斥锁,但我无法进入调用Ra
的代码块,除非TryEnter
成功。如何消除此错误?
câu trả lời hay nhất
我的猜测是 deployIsRunning
是一个类型为 bool
或其他值类型的变量。您对 TryEnter
Và Ra
的调用将框住值,每次都创建一个新对象。
基本上,只对锁使用引用类型变量。
关于c# - 如何避免 SynchronizationLockException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4759678/
我刚开始使用企业库的 v5,似乎遇到了一些奇怪的问题。 像往常一样,我从日志记录开始。我刚刚添加了所需的引用并执行以下代码: Logger.Write("test"); 到目前为止没有什么特别的。检查
我有一个名为HandleMessage 的方法,启动了一个新线程来处理消息。如果成功获取锁对象,则进行处理。否则将消息放入队列。 SynchronizationLockException 总是在 Mo
这段代码有什么问题? 我总是得到一个 Object synchronization method was called from an unsynchronized block of code 异常(
我有以下代码,它基于 Monitor class example on the msdn website . private void WebRefresh_Click(object send
我正在尝试使用 SpinLock,但即使是单线程控制台应用程序中的这个最基本的代码,当我调用SpinLock.Exit() 时也会引发以下异常 System.Threading.Synchroniza
释放锁时我收到 SynchronizationLockException。 当然,我做的第一件事就是用谷歌搜索这个问题。我发现了两个主要的错误模式: 在与创建互斥锁不同的线程上释放互斥锁。 使用值类型
Unity 依赖项注入(inject)容器有一个似乎广为人知的问题,即 SynchronizedLifetimeManager 经常会导致 Monitor.Exit 方法抛出 Synchronizat
我正在使用 Monitor 类来管理关键部分。但有时我会遇到带有以下消息的 SynchronizationLockException An unhandled exception of type 'S
是否可以检测是否是同一个线程试图释放锁?我们在代码中有很多地方看起来像: try { try { if(!Monitor.TryEnter(obj, 2000))
我试图在 blazor(客户端)启动期间调用 api 以将语言翻译加载到 ILocalizer 中。 在这一点上,我尝试从 get 请求中获取 .Result blazor 在标题中引发错误。 这可以
我正在创建一段代码,从我们拥有的遗留系统中获取网页。为了避免过度查询,我缓存了获取到的URL。我正在使用 Monitor.Enter、Monitor.Exit 并仔细检查以避免发出两次请求,但是当使用
Tôi là một lập trình viên xuất sắc, rất giỏi!