using System; using System.Windows.Forms; using System.Threading; public class ProcessusBackground : System.Windows.Forms.Form { /* * Lancer la fenêtre en mode réduit * Et Exécuter le Thread en Tâche de fond * Afficher un Message à la fin du processus * * */ private System.Windows.Forms.Button btnAnnul; public ProcessusBackground() { Text = "Exemple de processus en tâche de fond"; btnAnnul = new Button (); SuspendLayout(); btnAnnul.Text = "Annuler"; btnAnnul.Name = "btnAnnul"; btnAnnul.Size = new System.Drawing.Size (72, 30); btnAnnul.Location = new System.Drawing.Point ((ClientRectangle.Width - btnAnnul.Size.Width) / 2, ClientRectangle.Height - 35); Controls.AddRange(new System.Windows.Forms.Control[] {this.btnAnnul}); btnAnnul.Click += new System.EventHandler(OnClickButton1); this.Closed += new System.EventHandler(OnClickButton1); ResumeLayout (false); this.Visible = false; } public void DelayVisible () { while (true) { // Attendre 5 secondes avant de lancer la fenêtre Thread.Sleep (5000); DialogResult result = MessageBox.Show ("Fin d'exécution du processusnAfficher la Fenêtre?", "Affichage", MessageBoxButtons.YesNoCancel); switch (result) { case DialogResult.Yes: this.ShowDialog(); return; case DialogResult.No: continue; case DialogResult.Cancel: Application.Exit (); break; } return; } } private void OnClickButton1(object sender, System.EventArgs e) { Application.Exit (); } [STAThread] static void Main() { ProcessusBackground form = new ProcessusBackground(); Thread delay = new Thread (new ThreadStart(form.DelayVisible)); delay.Start (); Application.Run(); } }