WinFuture-Forum.de: Splash-Screen in C# - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Splash-Screen in C# während der jit kompilierung


#1 Mitglied ist offline   XDestroy 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.911
  • Beigetreten: 08. August 02
  • Reputation: 0

geschrieben 10. Februar 2011 - 12:46

Hallo zusammen!

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
0

Anzeige



#2 Mitglied ist offline   Campy 

  • Gruppe: aktive Mitglieder
  • Beiträge: 696
  • Beigetreten: 24. Januar 04
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 15. Februar 2011 - 16:45

Hallo XDestroy,

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
0

#3 _MagicAndre1981_

  • Gruppe: Gäste

geschrieben 15. Februar 2011 - 19:57

um NGEN wirst du nicht herum kommen
0

#4 Mitglied ist offline   Andi_84 

  • Gruppe: aktive Mitglieder
  • Beiträge: 391
  • Beigetreten: 30. November 08
  • Reputation: 1
  • Geschlecht:Männlich
  • Wohnort:Bayern

geschrieben 16. Februar 2011 - 16:10

Überlegung:
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,
Анди
Laptop: HP EliteBook 8560p; Core i7-2720QM, 16 GB DDR3 1333, 500 GB HDD, Intel HD Graphics 3000, Win 7 x64 SP1 Build 7601.17514
Internetzugang: T-Home VDSL 50 @ 51392 kbit/s down, 10048 kbit/s up || Router: FritzBox 7360 @ FW 111.05.24
0

#5 Mitglied ist offline   XDestroy 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.911
  • Beigetreten: 08. August 02
  • Reputation: 0

geschrieben 16. Februar 2011 - 17:18

und die "kleine exe" soll die große öffnen, oder? sowas in der richtung hatte ich auch überlegt
0

#6 Mitglied ist offline   Andi_84 

  • Gruppe: aktive Mitglieder
  • Beiträge: 391
  • Beigetreten: 30. November 08
  • Reputation: 1
  • Geschlecht:Männlich
  • Wohnort:Bayern

geschrieben 17. Februar 2011 - 10:10

Beitrag anzeigenZitat (XDestroy: 16.02.2011, 17:18)

und die "kleine exe" soll die große öffnen, oder?

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").
Laptop: HP EliteBook 8560p; Core i7-2720QM, 16 GB DDR3 1333, 500 GB HDD, Intel HD Graphics 3000, Win 7 x64 SP1 Build 7601.17514
Internetzugang: T-Home VDSL 50 @ 51392 kbit/s down, 10048 kbit/s up || Router: FritzBox 7360 @ FW 111.05.24
0

#7 Mitglied ist offline   XDestroy 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.911
  • Beigetreten: 08. August 02
  • Reputation: 0

geschrieben 17. Februar 2011 - 11:09

ja ich hab überlegt, die kleine exe native zu machen. aber das ist irgendwie schon ne unsaubere lösung. aber gut. wär eine möglichkeit.
0

#8 _MagicAndre1981_

  • Gruppe: Gäste

geschrieben 17. Februar 2011 - 15:51

warum kein NGEN? Damit minimierst du auch die Speichernutzung.
0

#9 Mitglied ist offline   wertzui 

  • Gruppe: aktive Mitglieder
  • Beiträge: 361
  • Beigetreten: 07. November 02
  • Reputation: 0

geschrieben 26. Mai 2011 - 20:11

Splashscreen als exe und die ursprüngliche exe als dll, die du dann lädst sollte gut gehen.
0

#10 Mitglied ist offline   UweKeim 

  • Gruppe: aktive Mitglieder
  • Beiträge: 25
  • Beigetreten: 08. Juli 11
  • Reputation: 1
  • Geschlecht:Männlich
  • Wohnort:Göppingen
  • Interessen:Software-Entwickeln ;-)

geschrieben 08. Juli 2011 - 19:23

Meiner Meinung nach ist ein Splash-Screen in einer .NET-Sprache ein Paradoxon:

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 :imao:

Dieser Beitrag wurde von UweKeim bearbeitet: 08. Juli 2011 - 19:23

1

#11 _der dom_

  • Gruppe: Gäste

geschrieben 22. Juli 2011 - 22:12

Der Splash ist doch kein Akt.

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
0

#12 _nobido_

  • Gruppe: Gäste

geschrieben 23. Juli 2011 - 11:36

Beitrag anzeigenZitat (der dom: 22. Juli 2011 - 22:12)

Der Splash ist doch kein Akt.



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
0

#13 Mitglied ist offline   XDestroy 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.911
  • Beigetreten: 08. August 02
  • Reputation: 0

geschrieben 23. Juli 2011 - 15:09

naja aber wenn der splash auch auf .net basiert, dann ist doch nichts gewonnen! es geht ja um die zeit die die clr braucht um in die gänge zu kommen. das dauert auf älteren geräten schon mal eine weile!
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0