今天碰到一个头痛的问题,我的程序里的线程就不执行
程序到线程开始的循环那里就执行不下去了
而不用线程在 Form1 Load 里就执行得好好的
哪位高手能帮忙看看啊 测试代码如下﹕public partial class Form1 : Form
{
public Form1()
{
InitializeComponent(); Thread test1 = new Thread(new ThreadStart(tttt));
test1.IsBackground = true;
test1.Start();
}
private void Form1_Load(object sender, EventArgs e)
{
while (true)<---这里的整个循环都没问题
{
string bbb = "123";
Thread.Sleep(5000);
}
}
public void tttt()
{
while (true) <---这里就停住了
{
string aaa = "123";
Thread.Sleep(5000);
}
}
}
{
Thread test1 = new Thread(new ThreadStart(tttt));
public Form1()
{
InitializeComponent();
test1.IsBackground = true;
test1.Start();
}
放在这里再把 tttt()方法改成 static 真的就可以了能请问一下原因吗﹖
我还是不太理解.呵呵
只要把 tttt 方法改成静态就可以了
public partial class Form1 : Form
{
Thread test1;
public Form1()
{
InitializeComponent();
test1 = new Thread(new ThreadStart(tttt));
}
private void Form1_Load(object sender, EventArgs e)
{
test1.IsBackground = true;
test1.Start();
while (true)<---这里的整个循环都没问题
{
string bbb = "123";
Thread.Sleep(5000);
}
}
public void tttt()
{
while (true) <---这里就停住了
{
string aaa = "123";
Thread.Sleep(5000);
}
}
}
这样应该没问题了!!
test1.IsBackground = true;
这样还是不行 我试过了
目前只知道改静态方法这一种办法TO : tdtdtdtdtd123(飘)
大侠能详细说明下原理吗﹖
{
Thread test1; public Form1()
{
InitializeComponent(); test1 = new Thread(new ThreadStart(tttt));
test1.IsBackground = true;
test1.Name = "test1";
test1.Start();
} private void Form1_Load(object sender, EventArgs e)
{
while (true)
{
string bbb = "123";
Thread.Sleep(1000);
}
} public void tttt()
{
while (true)
{
string aaa = "123";
Thread.Sleep(1000);
}
}
}
你的程序在你的计算机上能运行到 tttt() 的while 循环吗﹖
不会是我的计算机的问题吧
while (true) string aaa = "123";
Thread.Sleep(1000);
三行都加上断点把Form1_Load()里的
while (true)
string bbb = "123";
Thread.Sleep(1000);
三行也都加上断点不要用单步执行,那样有可能看不出来。
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
Thread test1 = new Thread(new ThreadStart(this.tttt));
test1.Start();
}public void tttt()
{
while (true)
{
MessageBox.Show("11");
Thread.Sleep(1000);
}
}
public partial class Form1 : Form
{
Thread test1;
int a;
int b; public Form1()
{
InitializeComponent(); test1 = new Thread(new ThreadStart(tttt));
test1.IsBackground = true;
test1.Name = "test1";
test1.Start();
} private void Form1_Load(object sender, EventArgs e)
{
while (true)
{
string bbb = "123";
Thread.Sleep(1000);
a++;
}
} public void tttt()
{
while (true)
{
string aaa = "123";
Thread.Sleep(1000);
b++;
}
}
}
你试一下用调试输出,不要断点 public partial class Form1 : Form
{
Thread test1;
int a;
int b; public Form1()
{
InitializeComponent(); test1 = new Thread(new ThreadStart(tttt));
test1.IsBackground = true;
test1.Name = "test1";
test1.Start();
} private void Form1_Load(object sender, EventArgs e)
{
while (true)
{
string bbb = "123";
Thread.Sleep(1000);
a++;
Debug.WriteLine("a="+a.ToString());
}
} public void tttt()
{
while (true)
{
string aaa = "123";
Thread.Sleep(1000);
b++;
Debug.WriteLine("b="+b.ToString());
}
}
}