CLR 无法从COM 上下文0x1a0e50 转换为COM 上下文0x1a0fc0,这种状态已持续60 秒

今天在调试程序时出现下面的异常: 

其他信息: CLR 无法从COM 上下文0x1a0e50 转换为COM 上下文0x1a0fc0,这种状态已持续60 秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送Windows 消息的情况下处理一个运行时间非常长的操作。这种情况通常会影响到性能,甚至可能导致应用程序不响应或者使用的内存随时间不断累积。要避免此问题,所有单线程单元(STA)线程都应使用泵式等待基元(如CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息。 

通过代码没有找出异常,网上有人说把,调试--异常中的contextswitchDeadlock选项去掉: 

按照说明去掉后确实没有此问题,但不明白出现这种情况的原因是代码处理不恰当造成的,还是说编译器有问题,期待高手的赐教。

 

 

 

正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起

.NET2.0中增加了42种非常强大的调试助手(MDALoaderlock 是其中之一。Loaderlock检测在一个拥有操作系统loader lock的线程上(如上例的video的运行线程)运行托管代码的情况。这样做有可能会引起死锁,并且有可能在操作系统加载器初始化DLL前被使用。虽然这样做很有必要,但在进行开发调试的时候,实在太麻烦

这是由于正在加载特定资源:例如换肤控件时

  • 办法一
  1. 把vs2005菜单的 调试->异常->Managed Debuggin Assistants->LoaderLock 的选中状态去掉
  2. 如果异常(exception)这一项没有的话,在工具---自定义---命令选项卡---左边选择调试--右边把异常托到菜单里
  3. 快捷键Ctrl+Alt+E,修改Managed Debuggin Assistants->LoaderLock 的选中状态去掉
  • 方法二
  1. 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework下面增加一个String,值为"0"
        不过这样做,在该计算机上所有基于.NET2.0开发都得不到MDA的好处
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这三条指令通常用于对 LPC2148 微控制器的 GPIO 端口进行初始化配置。具体作用如下: 1. `PINSEL0 &= ~0xFFFF0000`:将 PINSEL0 寄存器的高 16 位清零,即将 P0.0~P0.15 引脚的功能设为 GPIO 功能,以便通过 IO0DIR 寄存器来控制这些引脚的输入输出方向。 2. `IO0DIR |= 0x000000FF`:将 IO0DIR 寄存器的低 8 位置为 1,即将 P0.0~P0.7 引脚的方向设置为输出。 3. `IO0CLR |= 0x000000FF`:将 IO0CLR 寄存器的低 8 位置为 1,即将 P0.0~P0.7 引脚的输出电平设为低电平,从而初始化这些引脚的电平状态。 ### 回答2: PINSEL0是LPC2148系列微控制器中的一个寄存器,用来配置I/O引脚的功能。LPC2148系列微控制器具有多个I/O引脚,可以用于连接外设或实现数字输入输出功能。PINSEL0寄存器位于微控制器的GPIO接口寄存器组中,总共有32个位,每个位对应一个引脚。通过对PINSEL0寄存器的配置,可以决定每个引脚的功能。PINSEL0的功能设置是通过设置相应的位模式来完成的。 具体来说,PINSEL0的每一位可以被设置为以下几种模式之一:功能1、功能2、功能3、功能4和高阻态。功能1指的是将引脚设置为GPIO模式,可以实现通用的数字输入输出功能;功能2和功能3对应于特定的外设功能,如UART、SPI等;功能4用于选择引脚上的模拟功能。而高阻态表示将引脚设置为高阻态,不连接到任何外设上。 通过对PINSEL0寄存器的设置,可以根据实际需求配置每个引脚的功能,从而灵活应对各种应用场景。要注意的是,在配置引脚功能之前,需要对相应的管脚选择寄存器先进行配置。 总的来说,PINSEL0寄存器的配置对于LPC2148系列微控制器的外设连接和数字输入输出功能的实现至关重要,是实现各种功能和应用的基础。配置正确的引脚功能可以使微控制器的工作更加高效和专业化。 ### 回答3: PINSEL0是指用于配置LPC1768微控制器中0号引脚选择功能的寄存器。LPC1768是NXP公司生产的一款32位ARM Cortex-M3内核的微控制器芯片,该芯片具有多个引脚,可以用于连接外部设备和扩展模块。 在LPC1768芯片中,引脚功能是可配置的,可以根据用户的需求选择不同的功能。而PINSEL0寄存器就是用来控制0号引脚的功能选择的。PINSEL0寄存器共有32位,每个位对应一个引脚。在配置时,将相应位设置为0可以选择此引脚为GPIO功能,将其设置为1则选择为其他功能。具体的功能对应关系需要查看LPC1768的数据手册。 通过对PINSEL0寄存器的设置,可以将0号引脚配置为输入或输出引脚,也可选择为外部中断输入引脚、模拟输入引脚等等。这样就可以根据具体的应用需求,选择合适的引脚功能,实现与外部设备的连接和交互。 总之,PINSEL0是LPC1768微控制器中用于配置0号引脚功能的寄存器,通过对其进行设置,可以选择不同的引脚功能,以满足不同的应用需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值