上下文切换死锁

2023-12-27

在 VS 2008 中调试我的程序时,我遇到了以下错误:

CLR 在 60 秒内无法从 COM 上下文 0x34fc1a0 转换到 COM 上下文 0x34fc258。拥有目标上下文/单元的线程很可能执行非泵送等待或处理非常长时间运行的操作而不泵送 Windows 消息。这种情况通常会对性能产生负面影响,甚至可能导致应用程序变得无响应或内存使用量随着时间的推移不断累积。为了避免这种情况

尽管代码只包含一个简单的 C# 计时器,但它似乎陷入了僵局:请参阅下面的代码片段:

    private void RequestWork()
    {
        // The timer will be re-intialised if there are still no wating jobs in the database
        StopTimer();

        // assign all the threads some work
        InitialiseTimer();

    }



    /// <summary>
    /// Initialise a timer with a timer interval configured from app.config. Enable the timer and 
    /// register an appropriate event handler
    /// </summary>
    private void InitialiseTimer()
    {


        if (m_Timer == null)
        {
            // look up the default backoff time from the config
            string backOffInt = ConfigurationSettings.AppSettings["BackOffInterval"];

            int backoffInterval = 1000;


            m_Timer = new System.Timers.Timer();


            // set the timer interval to 5 seconds
            m_Timer.Interval = backoffInterval;

            m_Timer.Elapsed += new ElapsedEventHandler(m_Timer_Elapsed);
        }

        m_Timer.Enabled = true;
    }


    private void StopTimer()
    {

        if (m_Timer != null)
        {
            m_Timer.Enabled = false;
        }
    }

    void m_Timer_Elapsed(object p_Sender, ElapsedEventArgs p_E)
    {

        RequestWork();
    }

据我所知,计时器应该运行、流逝,然后再次初始化,我看不出出现死锁的本地原因。

我知道如何关闭此错误消息,但觉得这不是解决方案,而是掩盖了问题。


这是一个无限循环。您需要让您的应用程序至少每 60 秒发送一次一些消息,以防止发生此异常。 尝试偶尔调用 System.Threading.Thread.CurrentThread.Join(10) 一次。您还可以执行其他调用来传递消息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

上下文切换死锁 的相关文章

随机推荐

  • conda 错误:无法导入 zstandard

    我的 Conda 在 Ubuntu 18 04 上 出现以下错误消息 但所有功能都运行正常 home td7920 miniconda3 lib python3 8 site packages conda package streaming
  • App Engine 端点 API - 具有自定义域的 404

    我正在尝试将自定义域与应用程序引擎一起使用 本地主机一切正常并且应用程序点网址 https conference center 1177 appspot com 但与自定义域 https cc mdsarowar me 端点 API 不起作
  • Cakephp 翻译行为的默认行为不起作用

    谁能告诉我为什么当字段没有翻译时它会返回空 而不是默认翻译 我会感激所有的建议 不知道你想看我的代码的哪一部分 因为它都是直接来自 www book cake org 的 所以我粘贴一些代码 型号定义
  • 在 Linux 上安装 NPM

    我的目的是安装 angularjs 为此 我需要 gt npm 所以我想安装nodejs以获得 NPM 但我有这个错误 File configure line 16 in
  • Eclipse 上使用 Dataflow Runner 的 Apache Beam MinimalWordcount 示例

    我正在尝试在 Windows 上使用 Eclipse 中的 DataFlowRunner 运行 MinimalWordCount 示例 使用 MinimalWordCount gt 在 Eclipse 中运行作为 Java 应用程序 它与使
  • 使用 xclip 后 Tmux 中的键盘快捷键被停用

    我在 tmux conf 中使用以下配置从 xclip 来回复制文本 bind C c run tmux save buffer xclip i sel clipboard bind C v run tmux set buffer xcli
  • 消息控制器中未定义的方法“stringify_keys”

    当我尝试提交表单时 出现以下错误 当 1 个用户想要向另一个用户发送消息时 该表单就会显示 NoMethodError in MessagesController create undefined method stringify keys
  • 如何删除 Firestore 文档中的字段?

    如何删除 Cloud Firestore 中的文档字段 我正在使用下面的代码 但我不能 this db doc ProfileUser userId followersCount FollowersCount update currentU
  • 在 Web 上正确使用 SVG

    我想知道在 HTML 文档上使用 SVG 的最佳方法是什么 我读过一篇文章说 使用 SVG 图标比图标字体更好 即 fontawesome 等 以获得更好的性能并减少 HTTP 网络 调用 并提高搜索引擎优化 我知道如何使用 包含 SVG
  • 如何使用domains.google.com 验证我的自定义域

    如何使用验证我的自定义域domains google com如果 它不允许重复的密钥 并且 firebase 托管需要重复的密钥条目 并且 firebase 需要具有相同主机的 2 个文本条目 Google Domains 中的 DNS 记
  • UIPageControl 中的问题

    pageControl UIPageControl alloc initWithFrame CGRectMake 153 356 38 36 pageControl userInteractionEnabled YES pageContro
  • Google Maps SDK 中的自定义注释视图

    我创建了一个基于地图的 iOS 应用程序 其中我想使用 iOS 版 Google Maps SDK 而不是 Mapkit 我找到了文档 但没有找到与自定义注释视图相关的方法 任何人都可以为我提供解决方案创建自定义注释视图 信息窗口 以及如何
  • 在数学模式下将变量写为下标

    我正在尝试绘制一些数据 使用 for 循环来绘制分布 现在我想根据循环计数器将这些分布标记为数学符号中的下标 这就是我现在的处境 import matplotlib pyplot as plt import numpy as np impo
  • ASP.NET MVC 使用 UIHint 属性生成 DropDownList

    我想知道如何使用 UIHint 属性生成 DropDownList 我已经自定义了一些预定义属性 但我不知道如何继续生成 DropDownList 这是我对上一个的处理方式 我想以类似的方式使用它 public class CartProd
  • 使用 apache 检查请求中是否存在标头

    如何检查标头是否存在 我不想检查该值是否与 不同 我想使用以下方法检查它是否确实存在 重写条件 我怎样才能在 htaccess 文件中做到这一点 anhubhava 的回答很有用 但逻辑 颠倒了 它应该是 RewriteEngine On
  • Selenium 使用 javascript 获取元素的类属性

    我正在使用 Selenium 用 Ja vascript 编写测试自动化 尝试提取 DOM 元素的类属性对我来说不起作用 这是我的代码 var webdriver require selenium webdriver var driver
  • Java中的顶级类是什么?

    Java中的顶级类是什么 Java中顶级类的定义是什么 我知道这是一个基本问题 但我找不到这个问题的明确而简单的答案 它只是任何不是嵌套类的类 如果您的文件是 Foo java 并且您的类是 Foo 那么它是顶级类 in Foo java
  • iOS:popViewController 意外行为

    我一直在互联网上寻找解决方案 我什么也找不到 所以 我正在使用 UINavigationController 我将两个 UIViewController 推到上面 在第二个推送的 ViewController 中 我正在执行以下代码 voi
  • 在 iOS 6 中,UIViewController 是否可以支持比其父级更多的界面方向?

    iOS 6 中自动旋转的变化似乎让这变得异常困难 或者说不可能 他们似乎在推行这样的理念 子视图控制器不应覆盖其父视图控制器的自动旋转行为 这使得很难完成我想做的事情 我有一个必须纵向显示的视图控制器 它以模态方式推动另一个视图控制器 它是
  • 上下文切换死锁

    在 VS 2008 中调试我的程序时 我遇到了以下错误 CLR 在 60 秒内无法从 COM 上下文 0x34fc1a0 转换到 COM 上下文 0x34fc258 拥有目标上下文 单元的线程很可能执行非泵送等待或处理非常长时间运行的操作而