C# 线程类 Thread

原创 小道  2018-12-22 12:40:38  阅读 529 次 评论 0 条
摘要:

使用System.Threading.Thread类可以创建和控制线程。现在C#已经建议摈弃使用 Suspend, Resume 暂停/恢复线程, 也尽量少用 Abort方法中断一个线程.建议使用线程的同步手段有:  Mutex、ManualResetEvent、AutoResetEvent, Monitor..Net中的线程,可以分为后台线程和前台线程。后台线程与前台线程并没有本质的区别,它们之间唯一的区别就是:后台线程不会防止应用程序的进程被终止掉。就是当前台线程都结束了的时候,整

使用System.Threading.Thread类可以创建和控制线程。

现在C#已经建议摈弃使用 Suspend, Resume 暂停/恢复线程, 也尽量少用 Abort方法中断一个线程.

建议使用线程的同步手段有:  Mutex、ManualResetEvent、AutoResetEvent, Monitor.

.Net中的线程,可以分为后台线程和前台线程。后台线程与前台线程并没有本质的区别,它们之间唯一的区别就是:后台线程不会防止应用程序的进程被终止掉。就是当前台线程都结束了的时候,整个程序也就结束了,即使还有后台线程正在运行,此时,所有剩余的后台线程都会被停止且不会完成.但是,只要还有一个前台线程没有结束,那么它将阻止程序结束.应用程序进程的存亡由前台线程决定而于后台线程无关.这就是它们的区别.改变线程从前台到后台不会以任何方式改变它在CPU协调程序中的优先级和状态。因为前台后线程与程序进程的优先级无关.下面的代码示例对比了前台线程与后台线程的行为。创建一个前台线程和一个后台线程。前台线程使进程保持运行,直到它完成它的 while 循环。前台线程完成后,进程在后台线程完成它的 while 循环之前终止。

C#中,Thread类有一个IsBackground 的属性.MSDN上对它的解释是:获取或设置一个值,该值指示某个线程是否为后台线程。


使用线程显示当前时间代码:

using System;
using System.Threading;
using System.Windows.Forms;

namespace 多线程
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Thread t;//创建并控制线程,设置其优先级并获取其状态。
        private void button1_Click(object sender, EventArgs e)
        {
            t = new Thread(Time);//实例化 调用Time方法
            t.IsBackground = true;//设置后台线程
            t.Start();//线程已准备好,随时可以开始
        }
        void Time()//方法
        {
            while (true)//循环
            {
                textBox1.AppendText(DateTime.Now + "\r\n");//输出
                Thread.Sleep(1000);//挂起指定时间,毫秒
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Control.CheckForIllegalCrossThreadCalls = false;//获取或设置一个值,该值指示是否捕获对错误线程的调用
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (t != null)//判断线程是否为null  如果为null 说明当前没执行
            {
                t.Abort();//在调用此方法的线程上引发 ThreadAbortException,以开始终止此线程的过程。调用此方法通常会终止线程。
            }
        }
    }
}

输出结果:

image.png

本文地址:https://daobk.com/post/156.html
版权声明:本文为原创文章,版权归 小道 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?