Здравствуйте, adontz, Вы писали:
A>Окно в ограниченном домене открывается шесть секунд.
A first chance exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll
A first chance exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll
Включить подключение отладчика на каждое исключение — что за файлы оказываются ненайденными?
Help will always be given at Hogwarts to those who ask for it.
Re[5]: [WPF] Медленный запуск в ограниченном домене.
Здравствуйте, adontz, Вы писали:
A>General Output Setting — Везде On A>WPF Trace Settings — Везде All A>Новых сообщений нет.
Пока я нашел упоминание подобного у DevExpress, и они тоже не докопались до причин. Почитай, вдруг поможет.
Окно в обычном домене открывается меньше чем за секунду. Не поленился сравнил, окно WinForms открывается меньше чем за секунду.
Проблема
Окно в ограниченном домене открывается шесть секунд.
Меню File при первом обращении открывается секунду (потом нормально).
Проблема проявляется стабильно, при каждом запуске.
The thread '<No Name>' (0xafc) has exited with code 0 (0x0).
The thread '<No Name>' (0x438) has exited with code 0 (0x0).
The thread '<No Name>' (0xb34) has exited with code 0 (0x0).
The program '[2412] Rosmurta.Core.exe: Program Trace' has exited with code 0 (0x0).
The program '[2412] Rosmurta.Core.exe: Managed (v4.0.30319)' has exited with code 0 (0x0).
The thread '<No Name>' (0x8cc) has exited with code 0 (0x0).
The thread '<No Name>' (0x11e8) has exited with code 0 (0x0).
The thread '<No Name>' (0xe18) has exited with code 0 (0x0).
The program '[404] Rosmurta.Core.exe: Program Trace' has exited with code 0 (0x0).
The program '[404] Rosmurta.Core.exe: Managed (v4.0.30319)' has exited with code 0 (0x0).
Здравствуйте, _FRED_, Вы писали:
_FR>Включить подключение отладчика на каждое исключение — что за файлы оказываются ненайденными?
Could not load file or assembly 'Rosmurta.Extensibility.DefaultUI.resources, Version=1.0.0.0, Culture=en-US, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
Could not load file or assembly 'Rosmurta.Extensibility.DefaultUI.resources, Version=1.0.0.0, Culture=en, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
Здравствуйте, adontz, Вы писали:
_FR>>Включить подключение отладчика на каждое исключение — что за файлы оказываются ненайденными?
A>Could not load file or assembly 'Rosmurta.Extensibility.DefaultUI.resources, Version=1.0.0.0, Culture=en-US, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified. A>Could not load file or assembly 'Rosmurta.Extensibility.DefaultUI.resources, Version=1.0.0.0, Culture=en, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
Если это устранить, скорости не прибавится?
Help will always be given at Hogwarts to those who ask for it.
Re[4]: [WPF] Медленный запуск в ограниченном домене.
Здравствуйте, adontz, Вы писали:
A>Could not load file or assembly 'Rosmurta.Extensibility.DefaultUI.resources, Version=1.0.0.0, Culture=en-US, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
A>Could not load file or assembly 'Rosmurta.Extensibility.DefaultUI.resources, Version=1.0.0.0, Culture=en, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
А если усилить трассировку WPF, никакой дополнительной информации не появляется?
Re[4]: [WPF] Медленный запуск в ограниченном домене.
можно предположить, что лишний раз разрешения проверяются. В WPF по сравнению с WinForms много гаек позакручено.
Плюс, возможно, в другом домене стили контролов как-то по другому ищутся.
>A first chance exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll
это скорей всего у них поиск ресурсов так реализован. У меня все время такие исключения выскакивают. Можно сравнить поведение в WinXP и в Висте/Семерке. До Висты fallback выполнялся всегда к дефолтной культуре, которая используется в сборке, а в Висте (и наверное в семерке так же) сначала делается попытка провалиться до той культуры, которую использует система, и если уж ее нет — то до дефолтной. Вот лишнее исключение и получается.
Re[3]: [WPF] Медленный запуск в ограниченном домене.
Здравствуйте, notacat, Вы писали:
N>может еще попробовать [LoaderOptimization(LoaderOptimization.MultiDomainHost)]
Отлично, что смогли найти решение! Тебя не затруднит расписать примерно, что оно дает? Или шаманство?
Re[4]: [WPF] Медленный запуск в ограниченном домене.
N>>может еще попробовать [LoaderOptimization(LoaderOptimization.MultiDomainHost)] MM>Отлично, что смогли найти решение! Тебя не затруднит расписать примерно, что оно дает? Или шаманство?
Все есть в MSDN http://msdn.microsoft.com/en-us/library/system.loaderoptimization.aspx
В двух словах — если оптимизации нет, в каждый домен грузятся все используемые сборки. С MultiDomainHost сборки, которые прописаны в GAC'е, грузятся только один раз и используются во всех доменах.
Re[5]: [WPF] Медленный запуск в ограниченном домене.
Здравствуйте, notacat, Вы писали:
N>Все есть в MSDN N>http://msdn.microsoft.com/en-us/library/system.loaderoptimization.aspx N>В двух словах — если оптимизации нет, в каждый домен грузятся все используемые сборки. С MultiDomainHost сборки, которые прописаны в GAC'е, грузятся только один раз и используются во всех доменах.
А как это помогает в случае ресурсов?
Re[6]: [WPF] Медленный запуск в ограниченном домене.
N>>Все есть в MSDN N>>http://msdn.microsoft.com/en-us/library/system.loaderoptimization.aspx N>>В двух словах — если оптимизации нет, в каждый домен грузятся все используемые сборки. С MultiDomainHost сборки, которые прописаны в GAC'е, грузятся только один раз и используются во всех доменах. MM>А как это помогает в случае ресурсов?
Эффект будет зависеть от сборки. Ну гляньте для примера на код, который генерится для .resx файлов — там все свойства статические, т.е. если сборка загружена один раз — попытка найти ресурсы для конкретной культуры и загрузить сателлитную сборку будет делаться один раз. А если эту сборку грузить в каждый домен отдельно — это все будет происходить для каждого домена.
По-моему, то же самое будет и с WPF ресурсами. Например, если какая-то сборка содержит тематические ресурсы типа системных тем.
Вот интересно, какие тут эффекты могут быть с поиском ресурсов приложения. По-моему, когда WPF код грузится в отдельном домене, там Application.Current будет null. Может в этом случае какие-нибудь DynamicResources будут быстрей искаться, раз просматривать нужно меньше.
Re[7]: [WPF] Медленный запуск в ограниченном домене.
Здравствуйте, notacat, Вы писали:
N>Эффект будет зависеть от сборки. Ну гляньте для примера на код, который генерится для .resx файлов — там все свойства статические, т.е. если сборка загружена один раз — попытка найти ресурсы для конкретной культуры и загрузить сателлитную сборку будет делаться один раз. А если эту сборку грузить в каждый домен отдельно — это все будет происходить для каждого домена. N>По-моему, то же самое будет и с WPF ресурсами. Например, если какая-то сборка содержит тематические ресурсы типа системных тем. N>Вот интересно, какие тут эффекты могут быть с поиском ресурсов приложения. По-моему, когда WPF код грузится в отдельном домене, там Application.Current будет null. Может в этом случае какие-нибудь DynamicResources будут быстрей искаться, раз просматривать нужно меньше.
Гм. Погуглил. Такое ощущение, что к ресурсам это никак не относится. По крайней мере, я не вижу связи. Оптимизация загрузки идет чисто засчет отсутствия необходимости повторно грузить WPF в новый домен.
Тогда у меня вопрос к adontz'у: какой теперь "Debug Output WPF версии"? FileNotFoundException исчезли?
Re[8]: [WPF] Медленный запуск в ограниченном домене.
A>Абсолютно тоже самое, FileNotFoundException на месте. Колдунство какое-то
он и должен быть. Насколько я посмотрела, в этом простейшем сэмпле локализация должна делаться как минимум для окна и для меню — т.е. две попытки. Тут надо сравнивать количество этих FileNotFoundException, если открыть несколько окон из разных доменов.
Re[10]: [WPF] Медленный запуск в ограниченном домене.
Здравствуйте, notacat, Вы писали:
A>>Абсолютно тоже самое, FileNotFoundException на месте. Колдунство какое-то N>он и должен быть. Насколько я посмотрела, в этом простейшем сэмпле локализация должна делаться как минимум для окна и для меню — т.е. две попытки. Тут надо сравнивать количество этих FileNotFoundException, если открыть несколько окон из разных доменов.
Так оно у меня и открывалось раньше только в одном домене, не основном. А в основной домен сборка с окном даже не загружалась никогда.
A>Так оно у меня и открывалось раньше только в одном домене, не основном. А в основной домен сборка с окном даже не загружалась никогда.
а это уже полтергейст Даже не знаю, можно ли с рефлектором до чего-то докопаться или это где-то глубже закопано. Может, когда оно в отдельном домене, там еще какой-нибудь маршаллинг приплетается
Re[12]: [WPF] Медленный запуск в ограниченном домене.
Здравствуйте, notacat, Вы писали:
A>>Так оно у меня и открывалось раньше только в одном домене, не основном. А в основной домен сборка с окном даже не загружалась никогда. N>а это уже полтергейст Даже не знаю, можно ли с рефлектором до чего-то докопаться или это где-то глубже закопано. Может, когда оно в отдельном домене, там еще какой-нибудь маршаллинг приплетается
Смотрел вчера Reflector-ом (14-дневный trial ). Приставку ".resources" встретил только там, где идет работа с сателитными сборками. К сожалению, я здесь не шибко шарю. Сателитные сборки можно специально скомпилировать. Может попробовать так сделать? Поглядеть, что будет.