내 응용 프로그램에 데이터베이스의 특정 필드에 바인딩되는 약 20 개의 다른 콤보 상자가 포함 된 모달 대화 상자가 있습니다. 데이터베이스가 크고 대화 상자를로드 할 때 데이터베이스에서 모든 콤보 상자를로드해야합니다. 그래서 20 개의 스레드를 설정했습니다 (모든 콤보 상자마다 1 개씩). 모든 것은 잘 작동하지만 스레드가 실행되는 동안 사용자가 닫기 또는 취소 버튼 또는 확인 버튼을 사용하여 대화 상자를 닫을 때만 문제가 발생합니다. 이 경우 응용 프로그램이 충돌합니다. 스레드를 너무 일찍 종료하려고 시도했지만 도움이되지 않습니다. 여기 스레드 종료 코드응용 프로그램이 실행 중 스레드가 닫힌 상태에서 닫힘
if(m_iNoOfThreadsCompleted != m_iTotalThreads)
{
for(int i = 0; i < m_iTotalThreads - 1; i++)
{
if (m_threads[i] != NULL)
{
GetExitCodeThread(m_threads[i]->m_hThread, &exit_code);
if(exit_code == STILL_ACTIVE)
CloseHandle(m_threads[i]->m_hThread);
}
if(m_iNoOfThreadsCompleted == m_iTotalThreads)
break;
}
}
무엇이 문제입니까? 아니면 더 나은 접근 방법을 사용해야합니까? 도와주세요
approch를 사용해 보았지만 여전히 내 응용 프로그램이 충돌합니다. OnDestroy 이벤트에서 이벤트를 설정하고 있습니다. 따라서 OnDestroy가 호출되면 스레드 기능이 작동하지 않습니다. 이 코드를 넣을 수있는 다른 이벤트 처리기가 있습니까? P.S : 버튼 뒤에 코드를 삽입하지 않거나 주 대화 상자가 닫혀 있어도 대화 상자가 모덜리스이므로 내 대화 상자/응용 프로그램을 정상적으로 닫아야합니다. – WAQ