안녕하세요 프로그램 System.Threading.Thread.Sleep() 질문드립니다.

제가 지금 “외부응용프로그램을 여러개를 실행시키고 실행중인 프로그램이 꺼지면 자동으로 다시 실행되게하는” 프로그램을 만들고있습니다.

StringBuilder retVal1 = new StringBuilder();
            StringBuilder retVal2 = new StringBuilder();
            StringBuilder retVal3 = new StringBuilder();

           int result1 = GetPrivateProfileString("MONITORING", "PATH_01", "", retVal1, 100, sPath);
           int result2 = GetPrivateProfileString("MONITORING", "PATH_02", "", retVal2, 100, sPath);
           int result3 = GetPrivateProfileString("MONITORING", "PATH_03", "", retVal3, 100, sPath);

            //MessageBox.Show(retVal2.ToString());

            while (true)
            {
                Process[] NetClassClient = Process.GetProcessesByName("");
                Process[] NetClassClient1 = Process.GetProcessesByName("signal4(220118)");
                //if (NetClassClient.Count() == 0)
                //{
                //    process_.Start();
                //    handle = process_.Handle;
                //}

                if (NetClassClient.Length < 1)
                {
                    //MessageBox.Show("프로그램이 꺼져있으므로 실행시키겠습니다.");
                    Process.Start(retVal1.ToString());
                    //Process.Start(retVal2.ToString());
                    btn_p1.BackColor = Color.Green;
                }

여기서 실행시키고 싶은 2개의 프로그램을 실행시킵니다.

                else
                {

                    MessageBox.Show("정상작동중");
                    btn_p1.BackColor = Color.Red;
                    System.Threading.Thread.Sleep(3000);
                   
                }

그리고 여기 코드에서 System.Threading.Thread.Sleep(3000); 시간을 설정해서 꺼져있으면 켜지게 하려고합니다

그런데 여기서 실행프로그램을 1개만 하면 제가원하는 조건으로 잘돌아 가는데 실행프로그램을 2개 이상으로 두면 자꾸 오류가 나옵니다

image
image
image

혹시 제가 어떤부분을 잘못 생각하고 있는지 좀 도와주시면 감사하겠습니다.

읽어주셔서 감사하고 오늘하루도 좋은하루 보내세요~

1개의 좋아요

Process NetClassClient = Process.GetProcessesByName(“”);

Break Point 잡아서 NetClassClient 배열에 뭐가 담기는지 보시면 좋겠습니다.
아무것도 안 담길것 같은데…

그래서 아래 결과가 항상 True가 나오는 것 같네요.

if (NetClassClient.Length < 1) // 항상 True 라서 프로그램 실행.

그리고 while문 하나에 분기문 없이 그냥 retVal1값 하나로 계속 파일 하나만 실행하는 코드로 보입니다.
무한 루프가 도는 것은 아닌지…

1개의 좋아요