f9로 컴파일한후 종료했는데도 f9키가 다시 활성화되지 않습니다.
확인결과 프로세스에 해당 프로그램이 닫히지 않고 열려잇더군여...
폼은 sdi형태이고...총 2개의 폼입니다.
메인폼에서 두번째폼을 활성화시키지않고 그냥 종료하면 종료됩니다.
근데....두번째 폼을 뛰운 상태에서 죽이면 겉으로 보기엔 죽은거 같은데...사실은 죽지 않았더구녀....
이런식으로 죽였습니다.
form1.free;
form2.free;
아래처럼도 해보았는데....스택에러가 생기더군여..
form1.close;
form2.close;
게다가 TForm은 TComponent를 상속받았으므로 동적으로 생성할 때 parent를 설정하지 않은 경우라 아니면 메인 폼 종료시 같이 없어지도록 되어 있으니까 별로 신경쓸 부분은 없지요 즉, TForm.free를 써서 메모리에서 없애는 과정을 밟을 필요까진 없다는 것입니다.
대부분 이런 문제는 새로운 쓰레드를 생성하였는데 이 쓰레드가 미처 종료되기 전에 프로그램을 닫아서 메인 쓰레드를 종료하려고 할 때 발생합니다. 반드시 쓰레드(TThread)를 상속받은 클래스라고 명시하지 않더라도 별도의 쓰레드를 생성하여 동작하는 컴포넌트나 동작이나 메모리 해제 등이 명확하게 되어 있지 않은 코드가 Form2에 있는지 확인하여 보십시오
김동수 wrote:
> f9로 컴파일한후 종료했는데도 f9키가 다시 활성화되지 않습니다.
> 확인결과 프로세스에 해당 프로그램이 닫히지 않고 열려잇더군여...
> 폼은 sdi형태이고...총 2개의 폼입니다.
> 메인폼에서 두번째폼을 활성화시키지않고 그냥 종료하면 종료됩니다.
> 근데....두번째 폼을 뛰운 상태에서 죽이면 겉으로 보기엔 죽은거 같은데...사실은 죽지 않았더구녀....
> 이런식으로 죽였습니다.
> form1.free;
> form2.free;
>
> 아래처럼도 해보았는데....스택에러가 생기더군여..
> form1.close;
> form2.close;
>