C#多线程和异步测试

下来来看看Thread这个类:

属性:

CurrentThread 获取当前正在运行的线程

ExecutionContext 获取一个ExecutionContext对象,该对象包含当前线程的各种上下文信息。

IsBackGround  bool,指示某个线程是否为后台线程。

IsThreadPoolThread bool,指示线程是否属于托管线程池。

ManagedThreadId int,获取当前托管线程的唯一标识符。

Name string,获取或设置线程的名称。

Priority 获取或设置一个值,该值指示线程的调度优先级 。Lowest<BelowNormal<Normal<AboveNormal<Highest

ThreadState 获取一个值,该值包含当前线程的状态。Unstarted、Sleeping、Running 等。

方法:

GetDoMain() 返回当前线程正在其中运行的当前域。

GetDoMainId() 返回当前线程正在其中运行的当前域Id。

Start() 执行本线程。(不一定立即执行,只是标记为可以执行)

SuSpend() 挂起当前进程,如果当前线程已属于挂起状态则此不起作用

Resume 继续已经挂起的线程。

Interrupt()中断处于 WaitSleepJoin 线程状态的线程。

Abort() 终结线程

Join() 阻塞调用线程,直到某个线程终止。

Sleep() 把正在运行的线程挂起一段时间。

使用示例:

namespace WindowsFormsApp8
{
    public partial class Form1 : Form
    {
        Thread Thread_Time;
        int index;
        int NUM_4;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button7_Click(object sender, EventArgs e)
        {
            if (Thread_Time != null && Thread_Time.ThreadState == ThreadState.Running || Thread_Time.ThreadState == ThreadState.WaitSleepJoin)
            {
                Thread_Time.;
            }
        }

        private void button2_Click(object sender, EventArgs e)//线程开始按钮
        {
            if (Thread_Time == null)  //判断线程对象是否存在
            {
                Thread_Time = new Thread(() =>//Lambda表达式,匿名函数,匿名参数
                 {
                     while (true)
                     {
                         index++;
                         try
                         {
                             Thread.Sleep(10);
                             Num1.Invoke(new Action(() => //Invoke将操作线程的代码放在UI线程同步执行,Action创建一个无返回值的委托。
                             {
                                Num1.Text = index.ToString();
                            }
                             ));
                             
                         }
                         catch (Exception ex)//错误信息显示
                         {
                             MessageBox.Show(ex.ToString());
                            
                         }

                     }
                 }
                );
                Thread_Time.Start();

            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            NUM_4++;
            Num4.Text = NUM_4.ToString();
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/HuangYeLvZhou/p/12353134.html