相关疑难解决方法(0)

Visual Studio:ContextSwitchDeadlock

我收到了一条无法解决的错误消息.它源自Visual Studio或调试器.我不确定最终的错误条件是在VS,调试器,我的程序还是数据库中.

这是一个Windows应用程序.不是网络应用程序.

来自VS的第一条消息是一个弹出框,说:"没有为任何调用堆栈帧加载符号.源代码无法显示." 当点击它时,我得到:" 检测到ContextSwitchDeadlock ",以及下面再现的长消息.

在向下扫描DataTable的循环中出现错误.对于每一行,它使用表中的键(HIC#)值作为SqlCommand的参数.该命令用于创建返回一行的SqlDataReader.数据进行比较.如果检测到错误,则将行添加到第二个DataTable.

该错误似乎与程序运行所需的时间(即60秒后)有关,而不是发现了多少错误.我不认为这是一个记忆问题.循环中没有声明变量.创建的唯一对象是SqlDataReaders,它们位于Using结构中.添加System.GC.Collect()无效.

db是同一台笔记本电脑上的SqlServer站点.

表格上没有花哨的小玩意儿或小工具.

我不知道这个过程中有什么东西与我以前做过的几十次大不相同.我以前看过这个错误,但从来没有一贯的.

任何想法,任何人?

完整错误文本: CLR无法从COM上下文0x1a0b88转换到COM上下文0x1a0cf8达60秒.拥有目标上下文/公寓的线程很可能是在非抽空等待或处理非常长时间运行的操作而不抽取Windows消息.这种情况通常会对性能产生负面影响,甚至可能导致应用程序变得无响应或内存使用量随时间不断累积.为了避免这个问题,所有单线程单元(STA)线程都应该使用抽取等待原语(例如CoWaitForMultipleHandles)并在长时间运行操作期间定期泵送消息.

c# sql-server visual-studio

154
推荐指数
5
解决办法
11万
查看次数

C#中检测到ContextSwitchDeadlock错误

我正在运行C#应用程序,在运行期间我收到以下错误:

CLR无法从COM上下文0x20e480过渡到COM上下文0x20e5f0 60秒.拥有目标上下文/公寓的线程很可能是在非抽空等待或处理非常长时间运行的操作而不抽取Windows消息.这种情况通常会对性能产生负面影响,甚至可能导致应用程序变得无响应或内存使用量随时间不断累积.为了避免这个问题,所有单线程单元(STA)线程都应该使用抽取等待原语(例如CoWaitForMultipleHandles)并在长时间运行操作期间定期泵送消息.

有人可以帮我解决这个问题吗?

非常感谢.

c# multithreading

75
推荐指数
3
解决办法
8万
查看次数

标签 统计

c# ×2

multithreading ×1

sql-server ×1

visual-studio ×1