2016-08-24 3 views
0

Недавно я разработал приложение WPF, в котором повторно размещен конструктор Workflow с некоторыми пользовательскими действиями. Я столкнулся с проблемой памяти (Out Of Memory Exception) после следующего сценария: я открыл старый рабочий процесс с более чем 150 действиями, и я начал их модифицировать (открыть окно, изменить некоторые данные, сохранить и закрыть окно) до тех пор, пока произошло исключение. На этом этапе у моего приложения было 1,4 ГБ использования памяти, поэтому я начал искать решение. Зная, что я использую MVVM в своем приложении, я использую привязку данных и команд, мои представления правильно закрыты с помощью команды window.close(), определенной в окнах metro mahapps.WPF WF4.5 Проблемы с памятью регенерированного конструктора

Я использовал ANTS Memory Profiler, чтобы найти источник утечки, и я взял снимок памяти, когда использование памяти приложения было 1,35 ГБ. После анализа экземпляры, хранящиеся в памяти, являются типами System.Byte [], а путь к корню GC равен: System.Byte [] ==> System.IO.MemoryStream ==> System.Windows.Baml2006.SharedStream = => System.Windows.Baml2006.BamlBinaryReader ==> System.Windows.Baml2006.Baml2006Reader ==> System.Windows.ResourceDictionnary ==> System.Windows.ResourceDictionnary [] ==> Список ==> ResourceDictionaryCollection ==> ResourceDictionary = => System.Windows.EffectiveValueEntry [] ==> MyView

Я очень ценю вашу помощь. Благодарю.

+0

Вы используете Autofac или другой контейнер IOC? – helmsb

+0

Нет @helmsb, я не – Ouuss

ответ

0

У меня возникла эта проблема с проектом .net 4.0. Тогда это была известная проблема с Workflow Designer. Я думал, что проблема была решена в .net 4.5, но, возможно, это старое решение может пригодиться.

Следующие link позволяют маршалировать дизайнера рабочего процесса в собственном домене приложения. Таким образом, это позволяет вам загрузить конструктор с помощью надстроек AppDomain Isolated WPF.

Это, безусловно, устранило проблему утечки памяти для меня, которая произошла в нашем реорганизованном решении.

Смежные вопросы