Assurer la visibilité de l'écran de démarrage jusqu'à la fin du fil de discussion en arrière-plan
Cet article explique comment créer un écran de démarrage qui reste affiché jusqu'à ce qu'un thread d'arrière-plan termine le traitement. L'écran de démarrage, résidant dans une SplashScreen
classe distincte, apparaît avant le formulaire de candidature principal.
La classe SplashScreen
intègre une méthode, GetFromServer
, simulant la récupération et le traitement des données du serveur. Cette méthode s'exécute sur un thread séparé, permettant au thread principal d'afficher simultanément l'écran de démarrage. La synchronisation est cruciale pour éviter que l'écran de démarrage ne se ferme prématurément.
Pour réaliser cette synchronisation, un ManualResetEvent
est utilisé :
<code class="language-csharp">private ManualResetEvent _threadFinished = new ManualResetEvent(false); private void GetFromServer() { // ... (Existing GetFromServer method code) ... // Signal thread completion _threadFinished.Set(); }</code>
La méthode DisplaySplash
de la classe SplashScreen
est modifiée pour attendre la fin du fil de discussion avant de masquer l'écran de démarrage :
<code class="language-csharp">private void DisplaySplash() { // ... (Existing DisplaySplash method code) ... // Wait for thread completion _threadFinished.WaitOne(); // ... (Code to hide the splash screen) ... }</code>
Enfin, la méthode Main
lance l'écran de démarrage et utilise Application.Run
avec ShowDialog()
sur le formulaire principal pour bloquer le fil de discussion principal jusqu'à ce que l'écran de démarrage se ferme correctement :
<code class="language-csharp">[STAThread] static void Main() { using (var splashScreen = new SplashScreen(_tempAL)) { splashScreen.Show(); Application.Run(new Form1(_tempAL)); } }</code>
Cette approche garantit la visibilité de l'écran de démarrage jusqu'à ce que le thread d'arrière-plan (GetFromServer
) termine ses opérations, ce qui se traduit par une expérience utilisateur soignée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!