В моем приложении WPF при первом открытии меню происходит пауза, вызванная ленивой загрузкой Accessibility.dll.Медленная ленивая загрузка Accessibility.dll?
Как вы можете себе представить, это очень раздражает, поэтому я хотел бы нагрузить эту сборку при запуске. Я попробовал несколько способов сделать это без везения. например, с помощью Assembly.Load() или AppDomain.Load(). Ни один из этих вызовов не приводит к загрузке сборки (т. Е. Я не получаю событие AssemblyLoaded. Я попытался прямо ссылаться на assmebly, чтобы получить правильное AssemblyName для вызова этих методов, но все равно не повезло.
Каков правильный способ ? это произошло
Большое спасибо Dan
Edit: Call Stack сборочного нагрузки (после нажатия меню)
mscorlib.dll System.AppDomain.OnAssemblyLoadEvent (System.Reflection.RuntimeAssemblyLoadedAssemly [! Родной ! Managed Переход]
[Успели Native Перехода]
PresentationFramework.dll System.Windows.Controls.Primitives.Popup.CreateWindow (BOOL asyncCall)
Звонок из всплывающего окна:
_secHelper.ForceMsaaToUiaBridge (_popupRoot.Value);
Сборка фреймов предварительно задана ngen.exe –
Кажется, что Accessibility.dll просто содержит несколько интерфейсов, поэтому не уверен, могу ли я применить эту технику. Я добавил стек вызовов выше, когда сборка сначала загружается при открытии меню. –
@ HansPassant: вы правы, я не понимал, что это была сборка фреймов. Хотя я до сих пор не использовал его, если я правильно понял, это COM-оболочка, поэтому узким местом может быть создание COM-объекта? Если он предполагается использовать в модели STA, OP все равно придется создавать экземпляр в потоке графического интерфейса, поэтому фоновый init не поможет. – Groo