主窗体已经开启一个线程了,然后开第二个提示异常
主窗体已经开启一个线程了,然后开第二个提示错误
Thread thread = new Thread(this.fun);
thread.Start();//
----------------------第一个线程。
他的方法
public void fun()
{
while(true)
{
loginRule l = new loginRule();
Cmd c = new Cmd();
myform.Form2.loginRule.m = c.RunCmd("adb start-server devices");
myform.Form2.loginRule.v = c.RunCmd("adb devices");
string[] a = myform.Form2.loginRule.v.Split('\n');
for (int i = 0; i < a.Length; i++)
{
if (a[i].Contains("List of devices attached"))
{
if (a[i + 1].Contains("device"))
{
label4.Text = "手机连接成功";
}
else
{
label4.Text = "手机未连接";
}
}
}
Thread.Sleep(1000);
}
}
第一个问题,是1秒,我的循环暂停一次么
-------------------------------------------------------------------
Thread thread1 = new Thread(this.clear);
thread1.Start();
在主窗体中开启了第二个线程。
为什么他的方法中会提示错误

--------------------------------------------------------------
最后,我在第二个方法中判断,文件是否存在,存在则跳出循环,还是结束进程,怎么写阿。
------解决方案--------------------
1:是的,Thread.Sleep(毫秒); 1秒 == 1000毫秒
2:在死循环外层的代码当然没法访问。
文件存在跳出循环,结束线程可以这样写:
------解决方案--------------------
1.是执行一个循环后停1秒,不是1秒停一次,停一次是什么概念,一次是多长时间??
2.你sleep写死循环外面了,当然得不到执行.起码得有跳出循环的代码啊.
使用break可以跳出循环,或者不要while(true),而是while(bool),在执行过程中改变bool值,循环就结束了
Thread thread = new Thread(this.fun);
thread.Start();//
----------------------第一个线程。
他的方法
public void fun()
{
while(true)
{
loginRule l = new loginRule();
Cmd c = new Cmd();
myform.Form2.loginRule.m = c.RunCmd("adb start-server devices");
myform.Form2.loginRule.v = c.RunCmd("adb devices");
string[] a = myform.Form2.loginRule.v.Split('\n');
for (int i = 0; i < a.Length; i++)
{
if (a[i].Contains("List of devices attached"))
{
if (a[i + 1].Contains("device"))
{
label4.Text = "手机连接成功";
}
else
{
label4.Text = "手机未连接";
}
}
}
Thread.Sleep(1000);
}
}
第一个问题,是1秒,我的循环暂停一次么
-------------------------------------------------------------------
Thread thread1 = new Thread(this.clear);
thread1.Start();
在主窗体中开启了第二个线程。
为什么他的方法中会提示错误
--------------------------------------------------------------
最后,我在第二个方法中判断,文件是否存在,存在则跳出循环,还是结束进程,怎么写阿。
------解决方案--------------------
1:是的,Thread.Sleep(毫秒); 1秒 == 1000毫秒
2:在死循环外层的代码当然没法访问。
文件存在跳出循环,结束线程可以这样写:
while (true) {
if (System.IO.File.Exists("path")) {
return;
}
System.Threading.Thread.Sleep(15000);
}
------解决方案--------------------
1.是执行一个循环后停1秒,不是1秒停一次,停一次是什么概念,一次是多长时间??
2.你sleep写死循环外面了,当然得不到执行.起码得有跳出循环的代码啊.
使用break可以跳出循环,或者不要while(true),而是while(bool),在执行过程中改变bool值,循环就结束了