以下是我的问题:
我在Windows窗体项目中有一个自定义UserControl。我可以在设计师中设计它。但是,只要我要编辑包含控件的表单,Visual Studio 2010就会崩溃。
据我所知,构造函数和控件的Load-Event是在加载表单时执行的。
我尝试使用VS2010的另一个实例调试设计器,但找不到执行的位置。
起初,我的问题似乎是,对于Threading.Timer
对象,该对象用于初始化我的对象(即,从数据库中加载值,依此类推(如果出错,请稍后再尝试;))),回调函数是因此,在设计模式下,它试图访问它无法访问的对象。Threading.Timer
对象的初始化在Load-Event中。但是,即使我注释掉了load事件中的所有内容之后(除了try catch块,因为它在第二个实例VS2010中都有一个断点来调试设计器,都尝试了Debugger.Break()
调用),Visual Studio仍然崩溃,直到我想编辑包含设计模式下的控制。
我尝试了一些在这里找到的步骤,但未解决问题:User control always crashes Visual Studio
因此,即使设计人员在解析Load-Event或Constructor时没有任何工作。它仍然崩溃。
有人知道我可以做些什么来防止Visual Studio崩溃并在窗体设计器中正确显示用户控件吗?
包含用户控件的项目还引用了一些自定义库和一个库项目。我不知道问题是否与此有关。
最佳答案
解决了我自己的问题...
通过某种方式尝试调试设计器模式,我欺骗了自己。
在设计器模式下尝试打开包含用户控件的表单时,在Load-Event中设置 Debugger.Break()是一个非常糟糕的主意,因为如果您不使用其他Visual Studio实例调试Visual Studio,则 Debugger.Break()将停止应用程序,因此会导致Visual Studio实例崩溃。
最后,通过使用用户控件的DesignerMode属性,我能够阻止设计人员执行线程的初始化.Timer对象可以通过这种方式解决问题。
关于visual-studio-2010 - 在设计模式下打开包含用户控件的表单时,Visual Studio 2010崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7008217/