0

这可能是一个长镜头,但我没有想法。

我有一个 VS C# 解决方案,其中包含三个项目。有一个类库项目,然后是两个依赖于该类库的应用程序项目。类库又依赖于其他一些 DLL,包括来自 sharpdevelop 项目的 avalonedit dll。

其中一个应用程序正在构建和运行良好,包括使用我自己的包含 avalonedit 控件的控件。另一个应用程序无法运行,并且在我的包装控件中通过 XAML 初始化 avalonedit 控件时似乎失败了。

问题是我在调试输出中根本看不到任何错误,我看到的只是 dll 加载消息,然后什么也没有。如果我进入我的控件的构造函数,则该步骤永远不会完成。调试器说应用程序正在运行,但当底层编辑控件由 XAML 端构建时,它显然在 avalonedit dll 中的某个地方旋转。

我不得不假设这两个项目之间的环境差异存在一些问题,但我对如何继续追踪问题感到有些困惑。我是否必须以某种方式安排事情,以便我可以中断 avalonedit 源?

编辑:如果我暂停/中断所有它只是回到调用我的控制构造函数的行。

4

1 回答 1

1

听起来像一个僵局。仔细查看所有线程、它们的堆栈跟踪和同步原语(锁、信号量等)。请记住:竞争资源可能不是显式的(例如,当您在静态构造函数中等待试图访问正在构造的类型的静态字段的东西时,您会遇到死锁)。

有很多方法可以引入死锁,但没有简单的建议来处理它。您还可以在 Visual Studio 中对所有异常启用中断(调试 -> 异常...并勾选 CLR 异常)。

如果这没有帮助,您可以在此处提供堆栈跟踪,也许有人会发现问题。

于 2011-02-09T11:02:25.343 回答