主窗体已经开启一个线程了,然后开第二个提示异常

主窗体已经开启一个线程了,然后开第二个提示错误
  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值,循环就结束了