using System;
public class Test
{
// 並列でダウンロードする処理
private async Task< List< string>> LoadSomeDataAsync( List< string> idList)
{
var tasks = new List< Task< string>> ( ) ;
foreach ( var id in idList)
{
// A:ここで並列にダウンロードできているのか?
tasks.Add ( DownloadAsync( id) ) ;
}
await Task.WhenAll ( tasks) ;
// B:Resultを使うとデッドロックすると聞いたけどawaitしていれば大丈夫?
return tasks.Select ( task => task.Result ) .ToList ( ) ;
}
// 何かをダウンロードする処理
private async Task< string> DownloadAsync( string id)
{
await Task.Delay ( 2000 ) ;
return id;
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewogICAgLy8g5Lim5YiX44Gn44OA44Km44Oz44Ot44O844OJ44GZ44KL5Yem55CGCiAgICBwcml2YXRlIGFzeW5jIFRhc2s8TGlzdDxzdHJpbmc+PiBMb2FkU29tZURhdGFBc3luYyhMaXN0PHN0cmluZz4gaWRMaXN0KQogICAgewogICAgICAgIHZhciB0YXNrcyA9IG5ldyBMaXN0PFRhc2s8c3RyaW5nPj4oKTsKICAgICAgICBmb3JlYWNoICh2YXIgaWQgaW4gaWRMaXN0KQogICAgICAgIHsKICAgICAgICAgICAgLy8gQTrjgZPjgZPjgafkuKbliJfjgavjg4Djgqbjg7Pjg63jg7zjg4njgafjgY3jgabjgYTjgovjga7jgYvvvJ8KICAgICAgICAgICAgdGFza3MuQWRkKERvd25sb2FkQXN5bmMoaWQpKTsKICAgICAgICB9CgogICAgICAgIGF3YWl0IFRhc2suV2hlbkFsbCh0YXNrcyk7CiAgICAgICAgLy8gQjpSZXN1bHTjgpLkvb/jgYbjgajjg4fjg4Pjg4njg63jg4Pjgq/jgZnjgovjgajogZ7jgYTjgZ/jgZHjgalhd2FpdOOBl+OBpuOBhOOCjOOBsOWkp+S4iOWkq++8nwogICAgICAgIHJldHVybiB0YXNrcy5TZWxlY3QodGFzayA9PiB0YXNrLlJlc3VsdCkuVG9MaXN0KCk7CiAgICB9CgoKICAgIC8vIOS9leOBi+OCkuODgOOCpuODs+ODreODvOODieOBmeOCi+WHpueQhgogICAgcHJpdmF0ZSBhc3luYyBUYXNrPHN0cmluZz4gRG93bmxvYWRBc3luYyhzdHJpbmcgaWQpCiAgICB7CiAgICAgICAgYXdhaXQgVGFzay5EZWxheSgyMDAwKTsKICAgICAgICByZXR1cm4gaWQ7CiAgICB9CiAgICAKfQ==
compilation info
prog.cs(6,19): error CS0246: The type or namespace name `Task' could not be found. Are you missing `System.Threading.Tasks' using directive?
prog.cs(22,19): error CS0246: The type or namespace name `Task' could not be found. Are you missing `System.Threading.Tasks' using directive?
Compilation failed: 2 error(s), 0 warnings
stdout