首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

怎么把线程的生成,启动,中止放在同一个事件中

2012-01-18 
如何把线程的生成,启动,中止放在同一个事件中?我想实现的是,一个button的click事件发生时,检测线程是存在,

如何把线程的生成,启动,中止放在同一个事件中?
我想实现的是,   一个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! ");
}
}
}

热点排行