当前位置: 首页>>代码示例>>C#>>正文


C# Thread.IsBackground属性代码示例

本文整理汇总了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");
    }
}
开发者ID:.NET开发者,项目名称:System.Threading,代码行数:44,代码来源:Thread.IsBackground

输出:

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;
    }
}
开发者ID:C#程序员,项目名称:System.Threading,代码行数:94,代码来源:Thread.IsBackground


注:本文中的System.Threading.Thread.IsBackground属性示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。