- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我在 c#(.net 3.5 cp,vs2010)中有一个类,它执行通常需要很长时间的复杂计算。一分钟后抛出异常,检测到 ContextSwitchDeadlock。异常是本地化的,我的非英语语言所以我不能复制粘贴,但意思如下:¨CLR 模块无法从上下文 COM ... 转换到上下文 COM ... 60 秒。拥有目标上下文/单元的子进程可能正在执行非抽取等待或处理非常长时间运行的操作而不抽取 Windows 系统消息。
基本上,看起来我的应用程序正在计算并且很长时间没有响应窗口,visual studio 将其关闭并报告可能出现死锁。
我试图做一些研究并找到了两个解决方案:
禁用 visual studio 调试器中的某些选项以检测死锁。对我不起作用,因为它仅用于调试目的。
调用一些 DoEvents 方法,但它适用于 Windows 窗体而不是 WPF,而我使用的是 WPF。
也有人建议创建单独的线程,但我是线程的新手,不知道该怎么做。有什么建议吗?
最佳答案
这只是来自托管调试助手 (MDA) 的警告。您的代码违反了对单线程单元 (STA) 线程的严格要求,不允许它们长时间阻塞。这个警告够真实,阻塞UI线程很容易造成死锁。但是你的解释很简单,它只是因为忙于计算而变得紧张,而不是因为它实际上被阻塞了。 MDA 无法区分。
您可以使用 Debug + Exceptions 关闭警告,打开 Managed Debugging Assistants 节点并取消勾选 ContextSwitchDeadlock。
这仍然会在用户的桌面上留下一个对世界来说死气沉沉的窗口,这并不是很好的用户体验。而且它可能会产生副作用,导致其他程序在向顶层窗口发送消息时变得无响应。
你确实需要使用线程来真正解决这个问题。看看 BackgroundWorker,它在 MSDN 库和许多其他地方都有详细记录。
关于c# - .NET - 检测到 ContextSwitchDeadlock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8106159/
我在 Debug模式下运行类似于以下代码的内容: for (int i = 0; i < 5000; i++) { for (int j = 0; j < 10; j++) {
我在 Windows 服务中有一个运行时间相当长的进程,它会定期抛出“ContextSwitchDeadlock”异常: 我还操纵我的服务向自己发送电子邮件,其中包含有关遇到的异常的详细信息。我得到:
我认为这是一个愚蠢的问题,但当我发现我无法执行以下操作时,我感到有点奇怪: EditingItem.FROM = EditingItem.TO = DateTime.Now; // FROM, T
我有 RichTextBox,我从多线程中记录大量消息。一段时间后,我第一次收到“DisconnectedContext was detected”消息,我从 Debug->Exceptions...
我在 c#(.net 3.5 cp,vs2010)中有一个类,它执行通常需要很长时间的复杂计算。一分钟后抛出异常,检测到 ContextSwitchDeadlock。异常是本地化的,我的非英语语言所以
我一直收到无法解决的错误消息。它源自 Visual Studio 或调试器。我不确定最终的错误情况是在 VS、调试器、我的程序还是数据库中。 这是一个 Windows 应用程序。不是网络应用。 来自
我构建了一个 TreeView 控件,列出了任何驱动器或文件夹的目录结构。但是,如果您选择一个驱动器,或者具有大型文件夹和子文件夹结构的东西,则控件需要很长时间才能加载,并且在某些情况下会显示 MDA
我有一个 Excel workbook 对象,其中包含一个 sheet,我想将其内容复制到 List. 我有这个方法: private Task GeneratePagesList() {
我正在运行一个 C# 应用程序,在运行时出现以下错误: The CLR has been unable to transition from COM context 0x20e480 to COM c
在运行单元测试时,我得到如下所示的 MDA。 在错误消息中,被称为“COM 上下文”的十六进制值是什么? 我可以确定给定 STA 线程的这个值吗?如果是,怎么办? Managed Debugging
我是一名优秀的程序员,十分优秀!