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

来源:互联网 发布:p.b是什么意思网络用语 编辑:程序博客网 时间:2024/05/22 16:55
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.