2009-12-08 6 views
0

Form1에 데이터베이스에 연결하고 게시 된 재산 Form1-> DBSession에서 연결을 계속 중단하는 경우에도 데이터베이스 세션을 닫습니다. 나는 프로그램 (도서관에서) 예외를 throw 중단되는 경우에도,이 세션이 닫혀 있는지 확인하고 싶은 프로젝트 소스에서 포스 C++ Builder는

.

내 코드의 WinMain

try { 
    Application->Initialize(); 
    Application->CreateForm(__classid(TForm1), &Form1); 
    Application->Run(); 
} 
__finally 
    { Form1->DBSession->Close(); } 

에서이 된 TForm1을 알고하지 않기 때문에 컴파일되지 않습니다 컴파일러를이 코드를 작성할 때

USEFORM("fForm1.cpp", Form1); 

를 사용하여 양식이 포함되어 있습니다. USEFORM을 사용해야하고 헤더를 포함하는 재 선언 오류가 발생할 때 헤더 파일을 포함 할 수 없습니다.

+0

어떻게 abort()를 호출합니까? abort를 사용하지 않고 exit() 및 atexit을 사용하거나 exit_exception (exit_code)을 사용하도록 선택할 수 있습니까? 대신에? 그래서이 질문은 도움이 될 수 있습니다 : http://stackoverflow.com/questions/397075/what-is-the-difference-between-exit-and-abort –

+0

내 문제는 내가 양식 속성을 호출해야한다는 것입니다 또는 프로젝트 소스의 양식 메소드. run 메서드를 종료하는 코드를 제어 할 수는 없지만 대부분의 상황에서 Form1 -> DBSession -> close() 메서드가 호출되도록해야한다는 입장을 취하고 있습니다. –

답변

1

당신은()의 WinMain의 내부에서는 try..finally 블록을 추가 할 필요가 없습니다. WinMain()이 끝나면 모든 활성 TForm 개체가 자동으로 해제됩니다. MainForm을 소멸자 안에 DBSession을 닫으면됩니다.

+0

Ctrl-F2를 사용하여 개발 환경에서 실행을 중지하면이 작업이 완료됩니까? –

+0

Ctrl-F2 또는 abort() 호출은 소멸자를 호출하거나 __finally 블록에 도달하지 않습니다. –

관련 문제