Maison >développement back-end >C++ >Comment puis-je empêcher la fermeture d'un écran d'éclaboussures avant la fin d'un fil d'arrière-plan?
Prévenir la fermeture prématurée de l'écran de démarrage dans .NET
Cet article aborde le problème courant de la fermeture d'un écran de démarrage avant la fin du traitement du thread en arrière-plan. Nous exploiterons les capacités intégrées de gestion des écrans de démarrage du framework .NET pour une solution robuste.
Utilisation de la base d'applications Windows Forms
Cette approche utilise la classe WindowsFormsApplicationBase
pour gérer avec élégance le cycle de vie de l'écran de démarrage.
Configuration du projet : Commencez avec une nouvelle application Windows Forms (.NET Framework 4 ou version ultérieure). Ajoutez une référence à Microsoft.VisualBasic.ApplicationServices
.
Formulaire d'écran de démarrage : Créez un formulaire (frmSplash
) pour servir d'écran de démarrage.
Modification Program.cs : Dans Program.cs
, créez une classe (MyApp
) héritant de WindowsFormsApplicationBase
.
Remplacer les méthodes : Remplacer les méthodes OnCreateSplashScreen
et OnCreateMainForm
:
OnCreateSplashScreen
: instancie et attribue votre frmSplash
comme écran de démarrage.OnCreateMainForm
: C’est là que se déroule le travail de fond crucial. Effectuez ici vos opérations chronophages. Ce n'est qu'une fois ces opérations terminées que vous devez créer et attribuer votre formulaire principal (Form1
). Cela ferme automatiquement l'écran de démarrage.Exemple de code (Program.cs) :
<code class="language-csharp">using System; using System.Windows.Forms; using Microsoft.VisualBasic.ApplicationServices; namespace MyApplication { static class Program { [STAThread] static void Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); new MyApp().Run(args); } } class MyApp : WindowsFormsApplicationBase { protected override void OnCreateSplashScreen() { this.SplashScreen = new frmSplash(); } protected override void OnCreateMainForm() { // Perform time-consuming tasks here... // Example: Simulate work with a delay System.Threading.Thread.Sleep(3000); // Create the main form AFTER the tasks are complete this.MainForm = new Form1(); } } }</code>
Cette approche révisée garantit que l'écran de démarrage reste visible jusqu'à ce que tous les processus en arrière-plan soient terminés, offrant ainsi une expérience utilisateur bien améliorée. N'oubliez pas de remplacer le System.Threading.Thread.Sleep(3000);
par vos opérations de thread d'arrière-plan réelles.
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!