Demonstrates hiding a form and then doing background processing in a second thread


   

/*
C# Programming Tips & Techniques
by Charles Wright, Kris Jamsa

Publisher: Osborne/McGraw-Hill (December 28, 2001)
ISBN: 0072193794
*/

// HideForm.cs -- Demonstrates hiding a form and then doing background
//                processing in a second thread.
//
//                Compile this program with the following command line:
//                    C:>csc HideForm.cs
using System;
using System.Windows.Forms;
using System.Threading;

namespace HideForm
{
    public class HideForm : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Button button1;
        public HideForm()
        {
            Text = "A Simple Form";
            button1 = new Button ();
            SuspendLayout();
            button1.Text = "Cancel";
            button1.Name = "button1";
            button1.Size = new System.Drawing.Size (72, 30);
            button1.Location = new System.Drawing.Point ((ClientRectangle.Width - button1.Size.Width) / 2, ClientRectangle.Height - 35);
            Controls.AddRange(new System.Windows.Forms.Control[] {this.button1});
            button1.Click += new System.EventHandler(OnClickButton1);
            this.Closed += new System.EventHandler(OnClickButton1);
            ResumeLayout (false);
            this.Visible = false;
        }
        [STAThread]
        static void Main() 
        {
            HideForm form = new HideForm();
            Thread delay = new Thread (new ThreadStart(form.DelayVisible));
            delay.Start ();
            Application.Run();
        }

        public void DelayVisible ()
        {
            while (true)
            {
                Thread.Sleep (2500);
                DialogResult result = MessageBox.Show ("Display Form?", "Display", 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 ();
        }
    }
}


           
          


This entry was posted in Thread. Bookmark the permalink.