标签:void state 按钮 指示 join() int 上下文 main 代码
下来来看看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();
}
}
}
标签:void state 按钮 指示 join() int 上下文 main 代码
原文地址:https://www.cnblogs.com/HuangYeLvZhou/p/12353134.html