本文整理汇总了C#中System.Threading.Thread.IsBackground属性的典型用法代码示例。如果您正苦于以下问题:C# Thread.IsBackground属性的具体用法?C# Thread.IsBackground怎么用?C# Thread.IsBackground使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类System.Threading.Thread
的用法示例。
在下文中一共展示了Thread.IsBackground属性的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Main
//引入命名空间
using System;
using System.Threading;
class Example
{
static void Main()
{
BackgroundTest shortTest = new BackgroundTest(10);
Thread foregroundThread =
new Thread(new ThreadStart(shortTest.RunLoop));
BackgroundTest longTest = new BackgroundTest(50);
Thread backgroundThread =
new Thread(new ThreadStart(longTest.RunLoop));
backgroundThread.IsBackground = true;
foregroundThread.Start();
backgroundThread.Start();
}
}
class BackgroundTest
{
int maxIterations;
public BackgroundTest(int maxIterations)
{
this.maxIterations = maxIterations;
}
public void RunLoop()
{
for (int i = 0; i < maxIterations; i++) {
Console.WriteLine("{0} count: {1}",
Thread.CurrentThread.IsBackground ?
"Background Thread" : "Foreground Thread", i);
Thread.Sleep(250);
}
Console.WriteLine("{0} finished counting.",
Thread.CurrentThread.IsBackground ?
"Background Thread" : "Foreground Thread");
}
}
输出:
Foreground Thread count: 0 Background Thread count: 0 Background Thread count: 1 Foreground Thread count: 1 Foreground Thread count: 2 Background Thread count: 2 Foreground Thread count: 3 Background Thread count: 3 Background Thread count: 4 Foreground Thread count: 4 Foreground Thread count: 5 Background Thread count: 5 Foreground Thread count: 6 Background Thread count: 6 Background Thread count: 7 Foreground Thread count: 7 Background Thread count: 8 Foreground Thread count: 8 Foreground Thread count: 9 Background Thread count: 9 Background Thread count: 10 Foreground Thread count: 10 Background Thread count: 11 Foreground Thread finished counting.
示例2: Form1
//引入命名空间
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.ProgressBar progressBar1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private Thread fThread = null;
private System.ComponentModel.Container components = null;
public Form1() {
this.progressBar1 = new System.Windows.Forms.ProgressBar();
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.SuspendLayout();
this.progressBar1.Location = new System.Drawing.Point(24, 32);
this.progressBar1.Name = "progressBar1";
this.progressBar1.Size = new System.Drawing.Size(264, 23);
this.progressBar1.TabIndex = 0;
this.button1.Location = new System.Drawing.Point(24, 80);
this.button1.Size = new System.Drawing.Size(136, 40);
this.button1.Text = "Start Thread";
this.button1.Click += new
System.EventHandler(this.button1_Click);
this.button2.Location = new System.Drawing.Point(168, 80);
this.button2.Size = new System.Drawing.Size(120, 40);
this.button2.Text = "Stop Thread";
this.button2.Click += new
System.EventHandler(this.button2_Click);
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(704, 429);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.button2,
this.button1,
this.progressBar1});
this.ResumeLayout(false);
}
protected override void Dispose(bool disposing) {
if (fThread != null) {
fThread.Interrupt();
fThread = null;
}
}
[STAThread]
static void Main() {
Application.Run(new Form1());
}
private void UpdateProgress() {
if (progressBar1.Value == progressBar1.Maximum) {
progressBar1.Value = progressBar1.Minimum;
}
progressBar1.PerformStep();
}
public void ThreadProc() {
try {
MethodInvoker mi = new MethodInvoker(this.UpdateProgress);
while (true) {
this.BeginInvoke(mi);
Thread.Sleep(500);
}
} catch (ThreadInterruptedException e) {
Console.WriteLine(
"Interruption Exception in Thread: {0}",
e);
} catch (Exception we) {
Console.WriteLine("Exception in Thread: {0}", we);
}
}
private void button1_Click(object sender, System.EventArgs e) {
fThread = new Thread(new ThreadStart(ThreadProc));
fThread.IsBackground = true;
fThread.Start();
}
private void button2_Click(object sender, System.EventArgs e) {
fThread.Interrupt();
fThread = null;
}
}