2013-02-10 8 views

답변

0

IStream은 설계 상 동기식입니다. 이 시나리오를 비동기로해야하는 이유에 대해 먼저 물어볼 것입니다.

예를 들어, 비동기 데이터 스트림이 필요한 이유로 인해 UI 스레드를 차단하지 않을 경우 작업자 스레드에서 IStream 작업을 수행 할 수 있습니다.

여러 병렬 읽기를 실행할 수있는 이유 인 경우 드라이버 수준에서 요청이 단일 전역 MTP 세션에서 순차적으로 처리되기 때문에 MTP 1.0 장치는이 기능을 지원하지 않습니다. MTP 2.0은 동일한 장치에 여러 개의 병렬 연결을 허용하는 다중 세션을 지원하지만 아직까지는 많은 장치가 이것을 채택하지 않았습니다. 모든 제품이 아니더라도 대부분의 MTP 장치는 MTP 1.0입니다.

+0

이러한 세부 정보를 제공해 주셔서 감사합니다. 현재 작업자 스레드에서 IStream 개체의 데이터를 읽는 중입니다. 느린 장치에서 큰 파일을 읽는 동안 작업 스레드가 독점 될 것이라는 우려가 있습니다. 비동기 모니 커를 사용하여 IStream 데이터를 읽을 수 있으면 필요한 경우 읽기를 중단하고 OS가 기본 MTP 장치에 읽기를 디스패치하는 동안 다른 작업을 실행하게 할 수 있습니다. 하지만 여기에 비동기 모니 커를 사용할 수 있는지 확실하지 않습니다. – user2059733

+0

Windows WPD API를 통한 MTP 전송은 블록 단위로 이루어지며 장치 IStream에서 읽고 메모리/파일에 기록한 다음 루프를 수행합니다. 모든 읽기 후에 루핑되기 전에 동기화 된 플래그를 확인하십시오. –