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(); } }
1. | Talking to a visual element in a background thread. | ||
2. | Starting and stopping a thread. | ||
3. | Thread and UI Demo |