VS2008 多线程调试报错处理(ContextSwitchDeadlock )

在为财务部门开发一个VB.NET 2005应用程序时,遇到多线程调试中的ContextSwitchDeadlock错误。当处理大量数据导致进程运行过慢时,该错误频繁出现。解决方案包括检查Managed Debug Assistants,禁用ContextSwitchDeadlock选项,或者参考链接中的解决方法。感谢Scott Munro分享的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Debug -> Exception Menu    lagattack_   |   Edit   |   Show History
Please Wait   Please Wait

This days I been working trying to develop a VB.NET 2005 Application as a request from finance department.

They need a way to browse a table from MS SQL SERVER 2000 that have 60,000,000 records based on user parameters.

While was in the process of testing I get this error multiple times when the process takes too much.

1. ContextSwitchDeadlock was detected Message: The CLR has been unable to transition from COM context 0x1b2008 to COM context 0x1b2178 for 60 seconds. The thread that owns the destination context/apartment is most likely either doing a non pumping wait or processing a very long running operation without pumping Windows messages. This situation generally has a negative performance impact and may even lead to the application becoming non responsive or memory usage accumulating continually over time. To avoid this problem, all single threaded apartment (STA) threads should use pumping wait primitives (such as CoWaitForMultipleHandles) and routinely pump messages during long running operations.

 

2. In this link I find the solution to the problem:

http://blog.wpfwonderland.com/2007/08/16/clr-has-been-unable-to-transition-from-com-context-for-60-seconds/

or this have the solution:

http://harriyott.com/2006/05/contextswitchdeadlock-was-detected.aspx

3. Instructions if the websites are not available:

Debug -> Exceptions -> Managed Debug Assistants
and unchecking the ContextSwitchDeadlock item.

 Thanks to Scott Munro

Thanks for the time of Publishing a solution to this situation.


this is how to add exceptions menu to tool bar :

You can also change the settings through a menu item. Debug -> Exceptions -> MDA Exceptions. If the menu item is not there, try Tools -> Customize -> Commands Tab -> Debug -> Exceptions, and Drag Exceptions to the Debug menu in Visual Studio 2005. If that does not work, try Control-Alt-E.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值