【发布时间】:2012-10-05 16:43:07
【问题描述】:
我有几个使用 SQL CE 4.0 和实体框架的 MVC 项目。自从迁移到 Visual Studio 2012 后,我不断收到以下错误(不是每次,但经常出现)
检测到LoaderLock
尝试在 OS Loader 锁内进行托管执行。不要尝试在 DllMain 或图像初始化函数中运行托管代码,因为这样做会导致应用程序挂起。
如果我重新使用 VS 2010,则不会发生错误,这让我相当确定这是 Visual Studio 的问题,而不是我的代码,但我希望有人为我确认!
编辑
问题似乎总是在调用 dbcontext 的 Dispose() 方法时出现。这是异常助手的截图:
【问题讨论】:
-
或者,VS2012 在不安全结构方面比 VS2010 更加小心。
-
没有调用堆栈来帮助你。一般来说,LoaderLock 往往会产生错误的警告。您可以使用 Debug + Exceptions、MDA、LoaderLock 复选框将其关闭。
-
@Hans,似乎没有调用堆栈(我在帖子中添加了异常助手的屏幕截图)。我认为问题出在非托管代码中。
-
使用 SQL CE 4.0 和实体框架的 MVC 项目的 Microsoft Visual Studio Express 2013 for Web 也会发生这种情况。我一直在继续(F5)并且该应用程序仍然有效。我还没有找到在 Express 中关闭消息的选项。