2009-07-06 7 views
20

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

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

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

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

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

Я проверял Improving WPF applications startup time, но моя проблема, похоже, нуждается в другом подходе. Кто-нибудь выясняет, что может произойти?

+0

Как вы используете на своих тестовых машинах, используете ли вы ClickOnce? – Oskar

+0

Я развертываю только копирование .EXE и WPFToolkit.dll в папку. Я уже пытался установить .LLL в GAC, но результат был таким же –

+3

Это может быть затронуто не только приложения WPF. Это приложение .Net, загружающее сборку кода подписи/аутентификация (отличное от сильного имени) –

ответ

18

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

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

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

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

UPDATE:
Кажется, что .NET 4.0 устранил эту проблему, как описан here на MSDN.

+0

Кажется, это решение, хотя мне не ясно, из документации ли это отключает только проверку на отмену или другие проверки. – OregonGhost

+0

Да, вы правы. На данный момент у меня есть два варианта. Возможно, позже я попытаюсь проверить дополнительную информацию об этом. –

+2

. Net 4.0 и более поздние версии больше не нужны в соответствии с http://msdn.microsoft.com/en-us/library/bb629393(v=vs.100).aspx –

0

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

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

+0

Приложение не взаимодействует с сетью или БД каким-либо образом. открывает форму с некоторыми элементами управления. Я создаю релиз. Благодарю. –

0

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

+0

Я в настоящее время ищу это, но до сих пор не смог найти ... –

12

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

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

+2

Это отличный ответ! Это исправило проблему! У компьютеров, на которых будет запущено это приложение, не будет доступа к Интернету. Большое спасибо! –

+0

+1: Хорошее место Орегона! –

+0

Большой совет. Но можно ли это настроить в другом месте, а не в настройках подключения IE? Я имею в виду, например, приложение. –

0

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

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

Другим возможным решением является выбрать Свойства для «Протокол Интернета версии 4 (TCP/IPv4), а затем выберите Дополнительно, выберите вкладку„WINS“и установите„Отключить NetBIOS через TCP/IP“.

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