Q&A

  • 어플죽을때..자식폼죽이기와 스레드...
안녕하세요..영원한 델초보 어린왕자입니다..

오랜만에 질문을 올립니다.



문제가 있어서 말입니다.



저의 어플은..말이져..



메인폼에서..또다른 폼형태의 인스턴스 폼을 띠웁니다..

그 인스턴스 폼은 또다른 스레드 작업을 하고 있죠..



인스턴스 폼이 죽을때

스레드를 중단시키고..동작이 끝나길 기다리게 하고.

스레드를 프리시키게 했습니다..

거까진 잘 되았습니다.(밑에 소스)

procedure TQueryForm.FormClose(Sender: TObject; var Action: TCloseAction);

begin

InputThread.Terminate;

InputThread.WaitFor;

InputThread.free;

end;



문제는 말이져..메인폼..즉 어플을 죽일때..

자식폼을 어떻게 죽일까가 문제져..

이상한게..말이죠..

메인폼이 죽을때 자식폼의 onFormClose이벤트가 실행이 안된다는 겁니다.

분명 자식폼 생성시에..Create랑..parent속성을 메인폼에다 두었는데 말이져..

(아래 소스)

with TQueryForm.Create(Main.ReportForm) do

begin

parent:=Main.ReportForm;

....

...

어떻게 된건지..



원래 안되는 거면 어떻게 해야합니까?



저 코드는..

메인폼이 죽을때..메인폼의 자식컴포넌트중 폼형태인것을 찾아서..

폼을 Close하라구 명령을 줬습니다.

근데..이 코드의 문제는...

메인폼이 Close될때..자식폼이 Close되는데..

이때 자식 인스턴스 폼은 스레드가 끝나기를 기다리고 있다는 거죠..

그사이에 메인 폼은 죽어 버린다는 겁니다..

그래서 에러가 발생하는 거 같습니다..



어떻게 해야할지..

고수님 도와주십시오..혹시..

질문을 이해하기 어려우시면 다시 질문 주십시오..

그럼 감사함다.



3  COMMENTS