private void OnSearchAsyncPattern(object sender, RoutedEventArgs e)
{
Func<string, IImageRequest, string> downloadString = (address, req) =>
{
var client = new WebClient();
foreach (var header in req.Headers)
{
client.Headers.Add(header.Key, header.Value);
}
client.Credentials = req.Credentials;
return client.DownloadString(address);
};
Action<SearchItemResult> addItem = item => _searchInfo.List.Add(item);
foreach (var req in GetSearchRequests())
{
downloadString.BeginInvoke(req.Url, req, ar =>
{
try
{
string resp = downloadString.EndInvoke(ar);
var images = req.Parse(resp);
foreach (var image in images)
{
this.Dispatcher.Invoke(addItem, image);
}
}
catch (WebException ex) when (ex.Message.Contains("401"))
{
MessageBox.Show(errorMessage, "Registration Needed");
}
}, null);
}
}