Splash-Screen in C# während der jit kompilierung
#1
geschrieben 10. Februar 2011 - 12:46
Mein Programm ist inzwischen sehr groß geworden und ich habe festgestellt, dass es auf manchen Rechnern (die durchaus Dual Core haben) teilweise extrem lange dauert (bis zu 30 Sekunden), bis das Programm von der IL in Maschinencode übersetzt wurde und ausgeführt werden kann. Da ich das Programm jedoch gerne weiterhin OHNE setup-file verteilen möchte (d.h. ngen kommt nicht in frage) suche ich nach einer Alternative, die Wartezeit zu verkürzen oder zumindest zu überbrücken.
Gibt es evtl. eine Möglichkeit, einen Splashscreen anzeigen zu lassen, WÄHREND die JIT-Kompilierung läuft? Danach nützt er mir nix mehr, weil das Programm selbst nicht viel laden muss beim Start. Es geht eher darum, mit dem Splash-Screen die JIT-Kompilierung zu überbrücken...
Danke & Grüße
XD
Anzeige
#2
geschrieben 15. Februar 2011 - 16:45
schau dir mal folgenden Splashscreen auf Codeproject an:
Codeproject
Verwende den auch in einem Projekt und ist super einfach zu verwenden!
Viele Grüße
Campy
#3 _MagicAndre1981_
geschrieben 15. Februar 2011 - 19:57
#4
geschrieben 16. Februar 2011 - 16:10
Den Splash-Screen in ein eigenes Programm (also eine eigene .exe) auslagern; Diese .exe ist ja dann sehr kompakt und braucht nicht lange für die JIT-Kompilierung -> Wird also schnell angezeigt.
Wenn die "eigentliche" Programm-exe dann läuft, muss die halt den Splashscreen beenden.
Viele Grüße,
Анди
Internetzugang: T-Home VDSL 50 @ 51392 kbit/s down, 10048 kbit/s up || Router: FritzBox 7360 @ FW 111.05.24
#5
geschrieben 16. Februar 2011 - 17:18
#6
geschrieben 17. Februar 2011 - 10:10
Zitat (XDestroy: 16.02.2011, 17:18)
Ja, so hatte ich mir das gedacht. Die "kleine Splash-exe" muss sich dann automatisch beenden, wenn die "große" läuft (oder die "richtige exe" beendet die "Splash-exe").
Internetzugang: T-Home VDSL 50 @ 51392 kbit/s down, 10048 kbit/s up || Router: FritzBox 7360 @ FW 111.05.24
#7
geschrieben 17. Februar 2011 - 11:09
#8 _MagicAndre1981_
geschrieben 17. Februar 2011 - 15:51
#9
geschrieben 26. Mai 2011 - 20:11
#10
geschrieben 08. Juli 2011 - 19:23
Ein Splash-Screen wird gebraucht, weil man dem Benutzer während des Ladens, Startens und Initialisierens informieren will, dass was passiert.
Da eine managed Anwendung jedoch immer erst mal in die CLR geladen werden muss, dauert das schon lange, egal ob NGEN oder ned.
Meine Lösung sieht grob so aus:
1.) Ein Mini-Native-C++-Programm wird gestartet
2.) C++-Programm zeigt Topmost Fenster mit Splash-Screen-Bild an
3.) C++-Programm startet .NET-Programm
4.) .NET-Programm lädt, initialisert und sagt dann via IPC dem C++-Programm, dass es sich beenden soll.
Normalerweise ernte ich keinen Applaus, wenn ich das so erzähle, in der Praxis funktioniert das saugut
Dieser Beitrag wurde von UweKeim bearbeitet: 08. Juli 2011 - 19:23
#11 _der dom_
geschrieben 22. Juli 2011 - 22:12
du legst dir eine Form an und setzt die Controlbox auf False.
Dann ziehst du ein Panel oder ähnliches auf das Control und setzt einen Timer o.ä.
Wenn vom Timer die Zeit abgelaufen ist, dann sagst du, dass die Form sich als "hide" setzen soll.
Beim Beenden des Hauptprogramms sagst du dann "Environment.Exit(0)" und fertig.
So hab ich das mit meinem LogOn Screen gemacht. Und ja sowas funktioniert in der Tat.
Ich muss mal schauen ob ich da auf die schnelle ein Beispielprojekt hinbekomme
#12 _nobido_
geschrieben 23. Juli 2011 - 11:36
Zitat (der dom: 22. Juli 2011 - 22:12)
Schaut mir nach einem Fall von 'nicht richtig gelesen' aus.
Der Splash soll ja das lange JIT-kompilieren überbrücken.
Und solong das kompilieren, initialisieren etc. der Anwendung nicht abgeschlossen ist gibt's eben auch keinen splash
greetz
#13
geschrieben 23. Juli 2011 - 15:09
- ← [.Net] in anderen Benutzerkontext wechseln
- Programmierung
- cmd > start programm, mehrere Programme →

Hilfe
Neues Thema
Antworten
Nach oben



