나는 다음과 같은 코드가 있습니다비동기식 람다식이 대기 태스크와 함께 반환됩니까?
// Get all of the files from the local storage directory.
var files = await folder.GetFilesAsync();
// Map each file to a stream corresponding to that file.
var streams = files.Select(async f => { return await f.OpenStreamForWriteAsync(); });
내가 streams
유형 IEnumerable<Stream>
될 기대를하지만, 사실 그것은 내가 await를 키워드를 생략했다 내가 기대 한 것이 무엇 인 IEnumberable<Task<Stream>>
이다. 반환 유형 OpenStreamForWriteAsync
은 Task<Stream>
입니다. 확실히 기다리면 Stream
이 생성됩니까?
그렇다면 반환 대기 명세서가 작업을 반환하는 이유는 무엇입니까?
도움 주셔서 감사합니다.
비동기 메소드는 항상 '작업'또는 '작업'을 반환합니다. Select 자체는 반환 유형에 대해 신경 쓰지 않습니다. 따라서 선택 람다가 비동기이기 때문에 열거 할 수있는 작업을 계획합니다. 컬렉션을 반복하고 스트림을 기다릴 수 있습니다. –
vcsjones
음, 여기서 "비동기 무효화"방법을 쓸 수 있습니다. 어떻게 수정합니까? –
좋아요. 시도해 보겠습니다. –