2008-09-23 4 views
1

내 win32 C++ 응용 프로그램은 일반적으로 [회사 네트워크의] 네트워크 공유에있는 파일을 자주 확인합니다. 그러나 컴퓨터가 네트워크에 연결되어 있지 않으면 응용 프로그램이 몇 분 동안 멈추고 사용자는 일반적으로 프로세스를 종료해야합니다. 파일을 열기 전에 파일에 액세스 할 수 있는지 여부를 어떻게 확인할 수 있습니까?네트워크에 연결되지 않은 경우 fopen()이 차단되지 않도록하려면 어떻게해야합니까?

네트워크 연결이 있는지 확인하면 충분하지 않을 수 있습니다. 사용자가 연결을 끊는 이유는 파일이없는 테스트 네트워크에 사용하기 위해서입니다.

답변

2

나는 스레드가 당신의 최선의 선택이라고 생각합니다.

CreateFile API를 비동기 적으로 호출하는 방법이없는 것처럼 보입니다. 파일 핸들이 열리면 비동기 입출력을 수행 할 수 있지만 여는 과정은 여전히 ​​동기식입니다.

스레드의 동기화를 관리해야합니다. 응용 프로그램에서만 fopen 결과가 필요한 시점을 알 수 있기 때문입니다.이 시점에서 스레드가 계속 차단 될 수 있습니다.

2

파일 액세스를 별도의 스레드에 넣으시겠습니까?

+0

나는 똑같은 것을 제안하려고했다. :-) –

1

별도의 스레드에서이 방법이 가장 좋은 방법이 될 것 같습니다.

File.Exists

관련 문제