2009-10-27 4 views
1

Win API를 사용하여 파일을 비동기 적으로 읽고 쓸 수있는 간단한 방법을 찾고 있습니다. 내가 가진 것은 비동기 winsock API (WSAxxx) 완료 루틴과 같은 것입니다. 그러나 파일 API에는 그러한 파일이없는 것 같습니다. 그들은 어딘가에 숨겨져 있습니까?파일을 비동기 적으로 읽고 쓸 수있는 가장 쉬운 방법은 무엇입니까?

별도의 스레드에서 오버랩 된 이벤트를 기다리는 것은 스레드 관리 오버 헤드를 추가합니다. 물론 파일 당 스레드가 필요하거나 64 개의 개체 문제가 발생해야합니다. 완료 포트는 잔인합니다. 파일을 별도의 스레드에서 동 기적으로 읽는 것은 적합하지 않습니다.

제안 사항?

답변

0

나는 그것이 .인 것을 알고있다. 내가 모르는 부분은 win32 함수가 매핑하는 것입니다.

1

CreateFileReadFile/WriteFile 함수는 사용자가 필요로하는 '오버랩'모드를 지원합니다. 비동기 모드에서만 작동하는 ReadFileEx/WriteFileEx도 있습니다.

요약하면 FILE_FLAG_OVERLAPPED 플래그로 파일을 열고 파일 액세스 기능에 OVERLAPPED 구조 (및 xxxEx 작업의 경우에는 콜백)를 전달해야합니다.

Here's 샘플 클래스를 사용합니다.

0

비동기 영토로 들어가 자마자 "easiest"라는 단어를 잊어 버려야합니다. 진실로 가장 쉽게 생성자와 BeginRead/EndRead 메서드에서 isAsync = true와 함께 .NET의 System.IO.FileStream을 사용하는 것이 가장 쉽습니다.

관련 문제