2011-06-17 16 views
5

Zaimplementowałem aplikację WPF i zarejestrowałem ją do uruchomienia przy starcie systemu Windows. Moja aplikacja to prosta aplikacja do logowania, która po zalogowaniu użytkownika pojawia się w pasku zadań. Problemem jest to, że wyświetlenie się po starcie systemu Windows zajmie około 30 sekund. Próbowałem Ngen bez wielkiego sukcesu. Chciałbym uniknąć wdrożenia ekranu powitalnego. Chciałbym, aby moja aplikacja WPF pojawiała się "natychmiast" po starcie Windows podobnym do tego, co robi Windows Live Messenger. Czy mogę cokolwiek zrobić, aby skrócić czas uruchamiania? Czy mam inny wybór niż kodowanie tego natywnie? Dzięki.Jak zoptymalizować uruchamianie aplikacji WPF podczas uruchamiania systemu Windows

Odpowiedz

2

Czy uruchomienie komputera trwa 30 sekund (np. Jeśli uruchomisz go, klikając dwukrotnie, gdy komputer nie jest zajęty ładowaniem okien)?

Podczas uruchamiania systemu Windows komputer jest zwykle zajęty wieloma problemami, które mogą spowolnić działanie aplikacji. Niewiele możesz wtedy zrobić.

Ale kilka ogólnych wskazówek dla poprawy uruchomienie aplikacji WPF:

  • instancji jedynie kontrole rzeczywiście potrzebne, aby pokazać użytkownikowi początkowo
  • Zmniejsz złożoność formantów/okien.
  • Nie rób nic czasu zużywa się w konstruktorów formantów & okna
    • Nawet niewinne rzeczy jak czytanie pliku z dysku lokalnego może być czasochłonne, jeśli dysk jest zajęty innymi rzeczami (jak to zwykle jest w trakcie Uruchomienie okna)
    • wywołania usługi sieci Web może mieć dodatkowy długo, jeśli sieć nie została jeszcze w pełni zainicjowany
    • Łatwym rozwiązaniem jest odciążyć ciężką pracę do BackgroundWorker lub używać połączeń asynchronicznych zrobić żądań i/o i sieci

Istnieje również ustawienie można umieścić w app.config, który mówi, że środowisko wykonawcze nie uwierzytelnienia zespoły z certyfikatem (kontrola ta może trwać długo, zwłaszcza rozruch na zimno):

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

Niektórzy więcej ogólne wskazówki są dostępne na stronie MSDN pod adresem Application Startup Time.

+1

Nie ma problemu z zimnego startu na podwójne kliknięcie, trwa około 2 sekund, aby uruchomić. Problem dotyczy uruchamiania systemu Windows. Widziałem aplikacje takie jak Windows Live Messenger, które uruchamiają się natychmiast po uruchomieniu systemu Windows, ale są to aplikacje natywne. Czy mogę zbliżyć się do czegoś podobnego w WPF? – pfongkye

+0

Przejrzyj swój kod startowy/konstruktora i poszukaj takich rzeczy jak we/wy dysku i we/wy sieci i przenieś je do wątków tła/kodu asynchronicznego. Być może Twoja aplikacja blokuje oczekiwanie na sieć, która nie została jeszcze zainicjalizowana przez windows. –

+0

@IsakSavo faktycznie proste aplikacje WPF hello na świecie demonstrują to samo zachowanie – Poma

0

Może być pomocna dla ciebie this site. Zawiera listę niektórych opcji uruchamiania aplikacji (jeśli jest to usługa) lub logowania Windows. Obejmują one niektóre hakery rejestru, które należy cofnąć podczas odinstalowywania.

0

Korzystanie regedit, Tworzenie DWORD w rejestrze na

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Serialize

nazywa StartupDelayInMSec.

Wartość domyślna powinna być ustawiona na 0, ale należy dwukrotnie sprawdzić.

Po około 10 sekundach przerwy w uruchomieniu aplikacji.

uwaga: Klucz Serialize może nie istnieć.
Można go utworzyć, klikając prawym przyciskiem myszy na Explorer i wybierając Nowy -> Klucz

Powiązane problemy