public async Task <ActionResult> RequestImages(GetImagesViewModel model) { try { IEndpoint endpoint = _bus.GetEndpoint(_settings.ImageTrackingServiceAddress); var results = new ConcurrentBag <Uri>(); IEnumerable <Task> requests = model .SourceAddress .Where(x => !string.IsNullOrEmpty(x) && Uri.IsWellFormedUriString(x, UriKind.RelativeOrAbsolute)) .Select(address => { return(endpoint.SendRequestAsync(_bus, new RequestImageCommand(new Uri(address)), x => { x.Handle <ImageRequestCompleted>(msg => results.Add(msg.LocalAddress)); x.Handle <ImageRequestFaulted>(msg => { }); x.HandleTimeout(30.Seconds(), () => { }); }).Task); }); return(await Task.WhenAll(requests) .ContinueWith(tasks => { return PartialView("ImageResults", new ImageResultsViewModel(results)); })); } catch { return(View()); } }
public async Task<ActionResult> RequestImages(GetImagesViewModel model) { try { IEndpoint endpoint = _bus.GetEndpoint(_settings.ImageTrackingServiceAddress); var results = new ConcurrentBag<Uri>(); IEnumerable<Task> requests = model .SourceAddress .Where(x => !string.IsNullOrEmpty(x) && Uri.IsWellFormedUriString(x, UriKind.RelativeOrAbsolute)) .Select(address => { return endpoint.SendRequestAsync(_bus, new RequestImageCommand(new Uri(address)), x => { x.Handle<ImageRequestCompleted>(msg => results.Add(msg.LocalAddress)); x.Handle<ImageRequestFaulted>(msg => { }); x.HandleTimeout(30.Seconds(), () => { }); }).Task; }); return await Task.WhenAll(requests) .ContinueWith(tasks => { return PartialView("ImageResults",new ImageResultsViewModel(results)); }); } catch { return View(); } }