[C#] Splash Screen au chargement de l'application

Splash Screen au chargement de l'application [C#] - C#/.NET managed - Programmation

Marsh Posté le 30-01-2006 à 12:37:11    

Salut,
 
J'ai écrit une petite application d'analyse de logs.
 
Durant la phase d'initialisation, je me connecte à la base, puis je fais un certain nombre de requêtes afin de remplir les critères de filtres.
 
Actuellement, ma table de logs est petite (quelques milliers de lignes) et bourrée d'index (y'en a plus que de champs [:atari] )
Du coup ça dure quelques milli-secondes.
 
Cependant, quand l'appli qui génère les logs sera déployée chez les utilisateurs, ce seront quelques dizaines (centaines ?) de milliers de lignes générées par jour. Ainsi, le chargement va être plus long assez rapidement.
 
J'ai donc créé une form qui va me servir de splash screen.
 
Le but du jeu c'est :
Au démarrage de ma form principale, ouverture de la splash screen, et à la fin du chargement de la form principale, cacher la splash screen.
 
Cependant, tant que l'appli ne ramme pas au démarrage, je veux que la splash screen s'affiche un ou deux secondes (histoire d'avoir le temps de la voir).
 
Comment faire ?
 
J'ai tenté de l'ouvrir en modale, mais ça ne marche pas (ça bloque l'appli derrière).
En affichage "normal", soit j'ai pas le temps de la voir, soit ça marche pas, mais en tout cas ça affiche pas la splash screen :D
 
Est-ce que vous avez une idée de comment faire ça ?

Reply

Marsh Posté le 30-01-2006 à 12:37:11   

Reply

Marsh Posté le 30-01-2006 à 12:48:18    

le mieux est d'afficher le splash dans un thread séparé.
 
edit: y'en a un excellent ici : http://www.codeproject.com/csharp/ [...] Screen.asp


Message édité par Harkonnen le 30-01-2006 à 12:51:13

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 30-01-2006 à 12:53:50    

Actuellement, j'ai ça :
 

Code :
  1. // Dans les propriété de ma class de la form principale
  2. private SplashScreen splash;
  3.  private void InitializeComponent()
  4.  {
  5.   this.splash = new WebStats.SplashScreen();
  6.   this.splash.Show();
  7.   /** Le reste des trucs mis automatiquement **/
  8.  }
  9.  private void Form1_Load(object sender, System.EventArgs e)
  10.  {
  11.   Connect();
  12.   FillFilters();
  13.   splash.Close();
  14.   splash.Dispose();
  15.   splash = null;
  16.  }


 
Ca a pas l'air de marcher... :spamafote:
 
En plus j'ai ma spalshscreen qui reste ouverte en arrière fond (invisible)

Reply

Marsh Posté le 30-01-2006 à 12:54:26    

merci harko, je regarde ça :)

Reply

Marsh Posté le 30-01-2006 à 13:22:58    

Si tu est sur le framework 2.0, je te conseille même d'utiliser un BackGroundWorker, bien plus flexible (encore !) que les threads sous .net ;)

Reply

Marsh Posté le 30-01-2006 à 14:44:57    

Ca marche tout bieng :)
 
(en plus je doit avoir un bug quelquepart, du coup le thread d'affichage de la splashscreen met du temps à mourrir, et ça fait donc la temporisation désirée :sol:)
 
Comme dirait Joce : "It's not a bug, it's a feature©"

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed