您的位置:首页 > 大数据 > 人工智能

通过set和waitOne来控制子线程的运行和停止

2013-09-11 22:56 211 查看
public partial class Form1 : Form
{

//自动重置事件类
//主要用到其两个方法 WaitOne() 和 Set() , 前者阻塞当前线程,后者通知阻塞线程继续往下执行
AutoResetEvent autoEvent = new AutoResetEvent(false);

public Form1()
{
InitializeComponent();
}
public static bool _stop=true;
private void button3_Click(object sender, EventArgs e)
{
int i = 0;
Thread NewThread = new Thread(Run);
NewThread.Start(i);
}
private void Run(object i)
{
Control.CheckForIllegalCrossThreadCalls = false;
int j = (int)i;

while (true)
{
j++;
Thread.Sleep(1000);
label1.Text = j.ToString();
label1.Refresh();
if(_stop)
autoEvent.WaitOne();  //阻塞当前线程,等待通知以继续执行
}

}

private void button1_Click(object sender, EventArgs e)
{
autoEvent.Set(); //通知阻塞的线程继续执行
_stop = false;
}

private void button2_Click(object sender, EventArgs e)
{
_stop = true;
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐