public override async Task <object> Fetch() { var u = new Uri(uri); using (var stream = await ListAction.Action(u, new BaseQuery(this))) { return(BaseResource.FromStream(u, stream)); } }
public async override Task <FileSize> GetSize(Action <BaseResource, List <BaseResource> > lambda) { List <BaseResource> contents; await Request.GetLock(); try { using (var stream = await ListAction.Action(GetUri(), new Queries.BaseQuery())) { contents = BaseResource.FromStream(GetUri(), stream); } } finally { Request.ReleaseLock(); } lambda(this, contents); var subfolder = new List <Task>(); foreach (var c in contents) { subfolder.Add(Task.Run(async() => { var s = await c.GetSize(lambda); var sizeLock = new object(); lock (sizeLock) { Size += s; } })); } await Task.WhenAll(subfolder); return(Size); }