|
초보빌더 님이 쓰신 글 :
: Thread를 사용하여 프로그램을 돌리는데요.
: Thread는 while(!Terminated)를 이용한 무한 루프가 돌아가고요.
: 무한루프 안에 Sleep() 함수를 사용합니다.
:
: 프로그램을 종료시
: Thread->Suspend() 상태에서
:
: Thread->Terminate();
: delete Thread;
: 를 이용하여 프로그램을 종료하기 전에 Thread를 종료하는데
: 종료시 프로그램이 바로 종료되는 것이 아니고 Thread안에 Sleep()이 다 끝나야 프로그램이 종료가 됩니다.
: 종료시 바로 종료하는 방법을 알고 싶습니다.
:
: 다른 하나는 Thread안의 무한루프 안에
: 외부에서 가져온 dll파일의 함수를 사용하는데
: 이 함수가 계속해서 네트웤에 어떤 신호를 주는 함수입니다.
:
: 프로그램에서 버튼을 이용하여 시작을 누르면 Thread->Resume();
: 중지를 누르면 Thread->Suspend();
: 종료를 누르면
: Thread->Terminate();
: delete Thread;
: 하는데요
: 시작 후 중지를 누르면 프로그램이 다운이 됩니다.
: 에러는 발생하지 않고 프로그램이 응답없음 상태가 됩니다.
: 이런 경우 어떤식으로해결을 해야할지.. (dll안의 함수는 제가 손을 댈수가 없고 어떤식으로 구현되는지도 정확히 모르겠습니다.)
:
: 정신이 없어서 질문이 횡설수설이라..
: 답변 부탁드리겠습니다.
음... 이건 어떨까요? Sleep() 대신에...
MS PSDK 속에 있는...
WaitForSingleObject가 더 나을지도 모르겠군요...
TimeOut을 Sleep(500) 이면 TimeOut에다가 500 주면 될겁니다...
그래서.. switch case를 이용해서.. WAIT_TIMEOUT이면... Sleep과 같이 처리...
아닌 경우에는... Terminate를 하는 겁니다... 핸들은 뮤텍스도, objects도 다 되니깐... 뭐 그쪽으 사용하시면 되겠구요...
|