如何把线程的生成,启动,中止放在同一个事件中?
我想实现的是, 一个button的click事件发生时,检测线程是存在,如果不存在就创建,存在的话,检测是不是在运行中,如果运行就中止,如果中止就运行,应该怎样实现哪?
下面代码每次都会启动一个新的线程,是不对,应该怎么改啊?
private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(test));
if (t.ThreadState!=ThreadState.Running)
{
t.Start();
//t.Abort();
//t.Join();
//MessageBox.Show(t.IsAlive.ToString());
}
else
{
t.Abort();
}
}
------解决方案--------------------我觉得首先你得能传递要判断的Thread实例进来,可以把实例放到类变量里头,
然后在CLICK事件里头可以轻松的操作这个Thread实例.
------解决方案--------------------private string state;
private volatile bool flag=false;
state= "init ";
public void loop()
{
while(flag)
{
switch(state)
{
case "init ":
//县城开始
break;
case "runing ":
//运行
break;
case "shutdown ":
//关闭
break;
}
}
}
------解决方案-------------------- //必须在函数外边定义一个全局变量
private Thread t = null ;
.....................
private void button1_Click(object sender, EventArgs e)
{
if(t==null)
{
t = new Thread(new ThreadStart(test));
t.Start();
}
else
{
if(t.IsAlive ==true)
{
t.Abort();
t.Join();
MessageBox.Show( "Thread is Abort! ");
}
else
{
t.Start();
MessageBox.Show( "Thread is Start! ");
}
}
}