Background processing in a thread. : Thread and UI « GUI Windows Form « C# / C Sharp






Background processing in a thread.

 


using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Threading;

public class Form1 : System.Windows.Forms.Form {
    private System.Windows.Forms.Label label1;
    private System.Windows.Forms.Button button1;
    private System.Windows.Forms.Label ValueLabel;
    private System.Windows.Forms.Button button2;
    private System.ComponentModel.Container components = null;
    private Thread fThread;
    private int fValue;

    public Form1() {

        fValue = 0;
        this.label1 = new System.Windows.Forms.Label();
        this.button1 = new System.Windows.Forms.Button();
        this.ValueLabel = new System.Windows.Forms.Label();
        this.button2 = new System.Windows.Forms.Button();
        this.SuspendLayout();
        this.label1.Location = new System.Drawing.Point(24, 32);
        this.label1.Size = new System.Drawing.Size(80, 16);
        this.label1.Text = "Value of Data:";
        this.button1.Location = new System.Drawing.Point(232, 32);
        this.button1.Text = "&Update";
        this.button1.Click += new
             System.EventHandler(this.button1_Click);
        this.ValueLabel.Location = new System.Drawing.Point(120, 32);
        this.button2.Location = new System.Drawing.Point(104, 88);
        this.button2.Name = "button2";
        this.button2.RightToLeft =
             System.Windows.Forms.RightToLeft.No;
        this.button2.Size = new System.Drawing.Size(96, 23);
        this.button2.Text = "Start Thread";
        this.button2.Click += new
             System.EventHandler(this.button2_Click);
        this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
        this.ClientSize = new System.Drawing.Size(336, 141);
        this.Controls.AddRange(new System.Windows.Forms.Control[] {
          this.button2,
          this.ValueLabel,
          this.button1,
          this.label1});
        this.ResumeLayout(false);

    }

    [STAThread]
    static void Main() {
        Application.Run(new Form1());
    }
    private void ThreadProc() {
        while (fValue < 1000) {
            Thread.Sleep(1000);
            fValue++;
        }
    }

    private void button2_Click(object sender, System.EventArgs e) {
        fThread = new Thread(new ThreadStart(ThreadProc));
        fThread.IsBackground = true;
        fThread.Start();

    }

    private void button1_Click(object sender, System.EventArgs e) {
        this.ValueLabel.Text = fValue.ToString();
    }
}

 








Related examples in the same category

1.Talking to a visual element in a background thread.
2.Starting and stopping a thread.
3.Thread and UI Demo