我試圖一次性加載所有嵌入式資源異步。C#任務WhenAll,通過某個變量關聯任務
這是我有:
private static async Task<String[]> GetResourcesAsync()
{
var asm = System.Reflection.Assembly.GetEntryAssembly();
var todo = new List<Task<string>>();
foreach (var res in asm.GetManifestResourceNames())
{
using (Stream stream = asm.GetManifestResourceStream(res))
using (StreamReader reader = new StreamReader(stream))
{
todo.Add(reader.ReadToEndAsync());
}
}
return await Task.WhenAll(todo);
}
但是這種方法的問題是我不知道什麼資源corrosponds的方式,這串在數組中。
我怎麼會去提前每個任務的資源名稱「水庫」
由於關聯
請注意,異步在您的方案中沒有多大成就。 GetManifestResourceStream返回一個只支持同步操作的流,因爲它直接從內存中讀取。 –
好點,這是解決它的一種方法。 –