1
1
您很可能正确地识别了罪犯,将checkForIllegalCrossThreadCalls设置为false是创建随机死锁的好方法。该属性甚至存在的唯一原因是允许调试Borked.NET 1.x程序。 要解决死锁问题,您需要使用debug+windows+线程窗口在各个线程之间切换并查看它们的调用堆栈。但考虑到源的可能性质,这将是困难的,因为很可能是非托管代码对消息队列或sendmessage()执行某些操作。您没有编写的代码,也没有源代码,也没有调试符号。它们也往往是随机的,下次它死锁时可能看起来完全不同。 Windows基本上是线程不安全的对象。它们有大量与之相关的状态。不仅在Windows窗体类包装器中,在Windows本身中也是如此。我相信你解决了这个问题。 |
2
2
也许这可以帮助您: http://www.debuginspector.com/index.htm 它是一个Visual Studio扩展,允许您跟踪死锁,它还有一系列用于调试线程的漂亮功能(例如,在不进入线程窗口的情况下查看多个线程的调用堆栈)。 |
Eric · fgets_unlocked()用于多线程读取不同文件 2 年前 |
RoyGNEU · 堆上的专用std::Vector是线程安全的吗? 2 年前 |
JaiK · 在c中使用线程或队列写入文件# 6 年前 |
Catalin Ghita · 如何以安全线程对象为值初始化哈希表? 6 年前 |
Juan JuezSarmiento · C++删除对象,是否锁定? 6 年前 |
Missa · 两个不同线程正在处理原子NSMutableArray 6 年前 |
user5682282 · 从其他线程读取值 6 年前 |