코린이질문하러또왔습니다 ㅜ0ㅜ 안녕하세요

안녕하세요 질문자주 올리는데 항상 도와주셔서 감사합니다.

지금 만들고있는 프로그램은 “프로그램이 잘실행되는지 여부를 주기적으로 확인하고 프로그램이 꺼져있으면 자동으로 프로그램을 실행시켜주는” 프로그램을 만들어보고있습니다.

작동하고있는 프로그램들의 경로는 메모장에 저장하고 메모장에서 경로를 가져와서 프로그램이 꺼져있으면 실행시키고 잘돌아가고있으면 그냥 넘어가게 해놓았는데

지금현재 상황은 1개는 잘돌아가는데 2개이상 프로그램을 설정하면 잘안되서요 하는방법이 있겠죠?? 힌트좀 얻고자 두서없는 글을 남깁니다 ㅠㅠ

이사진이 메모장에 경로를 저장한겁니다 PATH_01 = 뒤에 경로만 읽어와서 변수에 저장해서 찾고있습니다.
image

 StringBuilder retVal1 = new StringBuilder();
            StringBuilder retVal2 = new StringBuilder();
            StringBuilder retVal3 = new StringBuilder();
            //StringBuilder retVal4 = 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);

위코드에 메모장안에서 찾을 문자를 넣어 retVal에 경로를 저장 하는 코드입니다.

이렇게 실행프로그램을 하나만 하면 잘되는데

2개이상을 실행시키려고 하면 안되네용 ㅠㅠ

retVal1,retVal2,retVal3
이렇게 3개를 for문으로 돌려서 하나씩 검사해서 켜져있는건 그냥 넘어가고 꺼져있는거는 자동으로 켜지게 하고싶은데 힌트좀 얻고싶어서 질문드립니다.

두서없는 질문 죄송하고 항상 도와주셔서 감사합니다 ^^

좋아요 1

한창 예전에 비슷한 코드를 짠 경험이 있는데 프로그램 실행할때 프로세스 아이디를 저장해놨다가, 30분 마다 실행중인 프로세스 아이디가 없으면 재실행해 주는 식으로 했었습니다.
근데 굳이 코드 아니더라두 폴라리스 오피스 도커 이미지로 구현될거같아요

좋아요 2

exe 파일 주기적으로 실행여부 확인하고 꺼져있으면 자동으로 켜는거 하고있습니다 ㅠㅠ

하나는 되는데 여러개를 어떻게 돌려야 가능할지 고민중에 있습니다. 감사합니다^^–

좋아요 1

코드를 조금만 더 구조적으로 만들 필요가 있어 보입니다.

  1. ini파일을 읽기 위한 GetPrivateProfileString()은 배열 형태의 값을 읽기 위한 방법으로는 부적절합니다.
    ini파일이 굳이 아니어도 된다면 JSON이라던가 YAML 등의 다른 데이터 포멧을 사용하시길 추천합니다.

  2. 읽어온 설정 값을 retVal1, retVal2, ...가 아닌 클래스로 사용하시는 것을 추천합니다.
    가장 이상적으로 JSON또는 YAML의 1:1 대응하는 클래스 형태가 좋습니다.

  3. 2개이상을 처리하려면?
    아마도 위의 구조적 문제 때문에 코드 전개가 반복적입니다. 일단, 위의 코드를 아래처럼 수정해야 합니다.
    … 아 이미지군요 ^^;
    else if (NetClassClient1.Length < 1)이 아닌 if (NetClassClient1.Length < 1) 입니다. NetClassClientNetClassClient1의 처리는 독립적이어야 하기 때문입니다.

설정에 대한 구조화(1:1 대응 클래스)가 된다면 목록의 foreach로 하나의 루틴으로 처리가 가능하게 될 겁니다.

좋아요 4

도움주셔서 너무너무감사합니다^^++

좋아요 2