Visual Studio 2008 contextswitchdeadlock с log4net и nhibernate
-
27-09-2019 - |
Вопрос
Я сталкиваюсь с чрезвычайно странным ошибкой здесь, и я не совсем уверен, что я следую за правильным путем для решения его или даже как это решить.
Вот проблема, с которой я сталкиваюсь: я начинаю отлаживать приложение WPF, которое использует log4net, nhibernate и linq для nhibernate, и когда я стараюсь получить сущность из базы данных, которое мое приложение, а иногда и после того, как Несмотря на то, что диалоговое окно исключения открывается, показывая сообщение, содержащее следующую информацию о ContextsWitchDeadlock MDA:
CLR был не в состоянии перейти от COM Context 0x34FC1A0 для контекста 0x34FC258 в течение 60 секунд. Нить, которая принадлежит контексту / квартиру назначения, скорее всего, либо выполняет не накачанку ждать или обработку очень длительной работы без перекачки сообщений Windows. Эта ситуация в целом имеет негативное влияние на производительность и может даже привести к применению, станут невоспалительным или использованием памяти, постоянно накопившимся накапливанию. Чтобы избежать этого
Я скопировал файлы кода в новый проект и удалил старый проект, чтобы посмотреть, смогу ли я заставить это сообщение исчезнуть, думая, что у него есть что делать с моей конфигурацией. Я начал добавлять несколько вещей за раз, чтобы посмотреть, что это вызывает, и когда я включил код конфигурации Log4Net, ошибка появилась снова. Сначала я включил его через AssemblyInfo, а затем конфигурацию кодового кода на запуск приложения, а абсолютно ничего не изменилось :(
Итак, вот мои выводы:
- Это происходит только тогда, когда я использую log4net.
- Это происходит, когда Nhibernate загружает объект из базы данных (ленивая загрузка).
Я не знаю, что может быть источником этой ошибки. Это происходит только при отладке в Visual Studio. Я пробовал последующие шаги на разделе «Включение и отключение MDAS» на следующей странице: http://msdn.microsoft.com/en-us/library/d21c150d.aspx., но это тоже не работает, VS все еще зависает, и это увеличивается использование памяти.
Когда я запускаю программу обычно, ничто из этого не происходит, поэтому я уверен, что это не ситуация с тупиком, поскольку этот вопрос предлагает: contextswitchdeadlock. (Я также попробовал решения, опубликованные там).
Из-за этого я решил отключить Log4Net и снова включить его, когда развертывание моего приложения.
Я размещаю этот вопрос, чтобы узнать, столкнулся, столкнулся ли кто-то еще или если у кого-то есть несколько предложений о том, как ее решить. Наконец, это может помочь кому-то остальное лицом к этой очень плохой проблеме.
Заранее спасибо,
Хорхе Варгас.
Решение
При использовании DebugAppender все объекты в базах данных загружаются и все его данные, записанные на вывод отладки. Это вызывало ContextsWitchDeadLock MDA, поскольку он потребовался более 60 секунд.
Отключение дебгандента решила мою проблему.
Благодаря Mauricio Scheffer за совет.