.NET에서 OLE DB로 DB를 열었는데, 이 놈이 그냥 프로그램에서 돌릴땐 잘되더니 전역함수로 된 쓰레드에서 돌리니 안되는군요. 전역함수에서도 그냥 클래스에서 호출하니 잘 돌아가는데 전역함수를 쓰레드로 돌리니 안되는 군요.
코드는 다음과 같은 형식이었습니다.
void thread(void *param) {
CDB tempDB;
HRESULT hr = tempDB.open();
if (SUCCEEDED(hr)) {
........
} else {
// DB cannot open
}
_endthread();
}
int CMain::OnInitDialog() {
.......
_beginthread(thread, 0, this);
}
이렇게 돌리니 안되구 _beginthread()대신 thread(this)로 돌리니 멀쩡하게 돌아갔습니다. 이유가 무엇인지와 해결책을 알려주신다면 감사드리겠습니다. |