2012-10-15 24 views
22

Mam kilka projektów MVC, które używają SQL CE 4.0 i Entity Framework. Od momentu przeprowadzki do Visual Studio 2012 Wciąż otrzymuję następujący błąd (nie za każdym razem, ale często)"Wykryto LoaderLock" w Visual Studio 2012

LoaderLock wykryto

Próba zarządzanego wykonanie wewnątrz blokady OS Loader. Nie próbuj uruchamiać zarządzanego kodu wewnątrz funkcji DllMain lub funkcji inicjowania obrazu, ponieważ może to spowodować zawieszenie się aplikacji.

Błąd nie występuje, jeśli wrócę do używania VS 2010, co sprawia, że ​​jestem raczej pewien problemu z Visual Studio, a nie z moim kodem, ale chciałbym, aby ktoś to potwierdził!

Edit

Problem zawsze wydaje się występować, gdy metoda Dispose() z dbcontext nazywa. Oto zrzut ekranu z Asystenta wyjątek:

Exception Assistant

+1

Albo VS2012 jest bycie bardziej ostrożny niż VS2010 o niebezpiecznych konstrukcjach. – nneonneo

+2

Brak stosu połączeń, aby przyjrzeć się tak ciężko, aby ci pomóc. Ogólnie LoaderLock generuje fałszywe ostrzeżenia. Możesz go wyłączyć za pomocą pola wyboru Debug + wyjątki, MDA, LoaderLock. –

+1

@Hans, wydaje się, że nie ma stosu wywołań (dodałem zrzut ekranu z Asystenta wyjątku do mojego wpisu). Zakładam, że problem jest w kodzie niezarządzanym. – Darren

Odpowiedz

12

I switch this off. Ponieważ ostrzega, że ​​aplikacja może się zawiesić, jeśli twój program się nie zawiesi, prawdopodobnie nic ci nie jest.

Problem można rozwiązać w ten sam sposób, chociaż, poprzez wyłączenie MDA:

Debug -> Wyjątki -> Managed Asystenci debugowania

i odznaczając opcję LoaderLock.

4

Miałem również problem z LoaderLock, gdy pracowałem z niektórych zewnętrznych dll w mojej aplikacji C#.

  • dla .NET 3.5 prostu odznacz Thrown option w Exceptions menu (Loader lock error)
  • dla .NET 4.0 dodałem <startup useLegacyV2RuntimeActivationPolicy="true"> w app.config
+1

Używam tego w tej chwili i działało świetnie. Miał problem z VS 2012, v4.5 i Sql CE 4.0. Oto link z dodatkowymi informacjami: http://stackoverflow.com/questions/1604663/what-does-uselegacyv2runtimeactivationpolicy-do-in-the-net-4-config/2467255#2467255 –