我有以下代碼:具有await返回任務的異步lambda表達式?
// 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>
型的,但實際上它是IEnumberable<Task<Stream>>
,這是我會一直期待有我省略了的await關鍵字。 OpenStreamForWriteAsync
的返回類型是Task<Stream>
- 肯定等待它應該產生一個Stream
?
那麼,爲什麼返回等待語句返回一個任務?
感謝您的幫助。
異步方法總是返回'任務'或'任務'。選擇本身並不關心返回類型。因此,它會投射一個可枚舉的Task,因爲您選擇的lambda是異步的。你可以遍歷你的集合並等待Stream。 –
vcsjones
那麼,人們可以寫一個「異步無效」的方法,這是我推測在這裏發生的。 我該如何解決? –
好的,我會嘗試。 –