以下是部分代码:有两个文本框textboxX1和textboxX2,通过一线程不断监测textboxX1的text值,如不为空,就赋值给textboxX2,当线程开始后,手动不断去改textboxX1的值,但是达不到想要的效果,线程好像不起作用。只有点一下按钮就赋一次值,然后就不动了。 Thread th;
private void button1_Click(object sender, EventArgs e)
{
th = new Thread(new ThreadStart(thStart));
th.Start();
}
private void thStart()
{
if(this.textBoxX1 .Text !="")
{
this.textBoxX2.Text =this.textBoxX1 .Text .ToString ();
}
Thread.Sleep(1000);
} private void button2_Click(object sender, EventArgs e)
{
th.Abort();
}
private void button1_Click(object sender, EventArgs e)
{
th = new Thread(new ThreadStart(thStart));
th.Start();
}
private void thStart()
{
if(this.textBoxX1 .Text !="")
{
this.textBoxX2.Text =this.textBoxX1 .Text .ToString ();
}
Thread.Sleep(1000);
} private void button2_Click(object sender, EventArgs e)
{
th.Abort();
}
你得将线程(thStart)里的代码放在一个循环里吧
其实用定时器也能实现
while(true)
{}
线程放里面
可是如果你线程里面的程序执行完毕后,线程还没结束,那么CPU不会给他分配轮循执行时间的.程序处于睡眠状态.
只有那些现成代码还没执行完毕的线程,才会循环分配到时间的(根据线程优先级).
如果你想达到你的结果那样,while (true) 把你的线程程序包括进去. 最好把你的那个sleep (1000) 去掉.就可以了.