Вопрос

Я сталкиваюсь с чрезвычайно странным ошибкой здесь, и я не совсем уверен, что я следую за правильным путем для решения его или даже как это решить.

Вот проблема, с которой я сталкиваюсь: я начинаю отлаживать приложение 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 за совет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top