Приложение WPF работает медленно при запуске

В моем приложении WPF в настоящее время отображается только экран с некоторыми элементами управления, он не подключается к БД или не имеет каких-либо других функций. Это простой экран пользовательского интерфейса.

Когда я тестировал на некоторых компьютерах (WinXP SP2), я обнаружил, что для запуска было занято более 15 секунд. Все они были в нашей области.

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

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

Подводя итог: приложение запускается быстро (2 секунды) только у одного пользователя, первого из которых я тестировал. Все остальные пользователи (домен или локальные) работают медленно (15 секунд).

Я проверял Улучшение времени запуска приложений WPF, но моя проблема, похоже, требует другого подхода, Кто-нибудь выясняет, что может случиться?

Ответ 1

Я нашел другое решение этой проблемы в этой документации из Microsoft.

Добавление следующей конфигурации в файл app.config также решит проблему:

<configuration>
    <runtime>
        <generatePublisherEvidence enabled="false"/> 
    </runtime>
</configuration>

Таким образом, вам не нужно менять конфигурацию компьютера. Это просто настройка приложения.

UPDATE:
Похоже, что .NET 4.0 исправил эту проблему, как описано здесь в MSDN.

Ответ 2

Является ли система подключена к сети, но не может попасть в Интернет, потому что прокси-сервер не настроен? Если да, перейдите в "Настройки Интернета" (например, "Свойства обозревателя Internet Explorer" ), "Дополнительно" и просмотрите в дереве "Безопасность" и флажок "Проверять отозванные сертификаты" или что-то в этом роде (я использую немецкую Windows, поэтому у меня нет Английский лейбл под рукой). Снять и снова проверить.

Если это устранит проблему, у вас есть одна подписанная сборка, которая не принадлежит Microsoft, для которой .NET Framework будет проверять наличие рекогносцировки и тайм-аут через 15 секунд. Если вы отключите проверку или настройте подключение к Интернету должным образом, вам не придется ждать.

Ответ 3

Открывает ли он файл или каким-то образом взаимодействует в сети? Потому что, если нет, я бы предположил, что независимо от того, зарегистрировался ли вы в домене или запущен как локальный пользователь, вероятно, это красная селедка.

Собираетесь ли вы в режиме отладки или выпуска? Стоит попробовать режим выпуска, если вы еще этого не сделали, потому что запуск в debug делает нагрузку дополнительной проверки ошибок.

Ответ 4

Вы проверили, есть ли какие-либо политики домена, которые могут повлиять на этот сценарий?

Ответ 5

У меня была эта проблема (.NET 4.5). В моем случае проблема заключалась в том, что компьютер не был подключен к Интернету, но было другое устройство (камеры и т.д.), Которые были подключены через GigE. Запуск каждого приложения .NET задерживался на 20 секунд.

Решение было довольно простым: просто подключив компьютер к Интернету, запустил любое приложение .NET(первый запуск занял около 7 секунд), и после этого каждый запуск был довольно быстрым, даже если компьютер больше не подключался к интернет. Кроме того, мне пришлось отключить протокол TCP/IP V6 (вызванный 3-5-секундной задержкой).

Еще одно возможное решение - выбрать "Свойства" для версии интернет-протокола 4 (TCP/IPv4), затем выбрать "Дополнительно", выбрать вкладку "WINS" и установить "Отключить NetBIOS через TCP/IP".