지금 구조가
UI 블락 안걸리게 작업 A,B를 각각의 쓰레드에서 수행하는건데
A는 메인 명령을 수행하고
B는 A가 하는 작업을 감시하다가 에러가 발생하면 A에 종료 메세지를 보낸 후에 자신도 종료되는거임
아니 정확히 말하면 둘이 종료메세지를 공유하는거라 그냥 종료메세지를 보내서 둘다 종료됨.
근데 이제 여기서 A,B가 그냥 바로 종료되는게 아니라
작업을 에러가 없는 초기상태로 돌려놓고 재시작되도록 하고 싶음.
일단 제일 간단한건 B가 초기화를 시키고, 종료 시점에서 A만 종료시키고 자기는 A,B를 실행하는 함수를 다시 호출하는건데,
이건 지금 테스트해보니 돌아가긴 함...
근데 쓰레드가 재귀적으로 무한 생성되는거잖아....
뭐 재귀호출이 많아야 두자릿 수일거라 감당 못 할 정도는 아니겠지만 그래도 좀 꺼림칙함.
그래서 생각한 해결책은
지금 쓰레드A,B를 실행하는 함수를 WndProc 통해서 핫키로 실행할 수 있도록 해놨으니까,
B가 종료되기 직전에 WndProc을 강제로 발생시키면
자기 쓰레드가 아니라 외부에 새롭게 쓰레드A,B를 생성하고 바로 자신은 종료될테니
뭐 오버플로우같은 문제는 안생기지 않을까... 생각됨.
뭔 이상한 얘기만 한거 같은데 하여간 궁금한거는
WndProc 콜백을 강제로 발생시키는 방법이 있나여? 그렇게 하면 이 문제가 해결되나여?
아니면 이 문제를 해결하는 다른 좋은 방법이 있나여?
지금 쓰레드A,B를 실행하는 함수를 WndProc 통해서 핫키로 실행할 수 있도록 해놨으니까, B가 종료되기 직전에 WndProc을 강제로 발생시키면 << 이부분 이해가? 재귀적으로 발생되서, 대안이 왜 WndProc 인지?
아니면 쓰레드 명이나 ID 부여하고 동일한거 있으면 new 안하도록 하는건 어떰?
sadfad//되서->돼서 (되어 = 돼임) [리듬 맞춤법 봇♬]
이게 그냥 await,async로 만든 쓰레드라서 어떻게 해야될지....
간단하게 b가 하고있는 관리작업만 전담하는 스레드c를 만들면 끝이잖아
스레드B에서 A를 종료시키고 외부에 있는 AB호출 이벤트를 다시 발생시키면 독립적으로 돌아가는 B랑 새로 만들어진 A,B' 세개의 스레드가 남고, 여기서 기존의 B를 종료하면 처음과 같은 A,B 상태가 되지 않을까 싶어여
원소스가 개판이라 A,B를 무조건 같이 호출해야 하는 바람에 ㅠㅠ 따로 떼내려니까 막 여기저기 블락 걸리더라구요