private static void OnModuleCatalogXmlCompleted(object sender, DownloadStringCompletedEventArgs e)
{
var webClient = (WebClient) sender;
webClient.DownloadStringCompleted -= OnModuleCatalogXmlCompleted;
var userState = (Tuple<ModuleCatalog, Action<ModuleCatalog>>) e.UserState;
var moduleCatalog = userState.Item1;
var completedCallback = userState.Item2;
if (e.Error != null)
{
Log.Error(e.Error, "An error occurred when downloading the module catalog xml");
}
else
{
using (var memoryStream = new MemoryStream())
{
using (var writer = new StreamWriter(memoryStream))
{
writer.Write(e.Result);
writer.Flush();
memoryStream.Position = 0L;
var tempModuleCatalog = CreateFromXaml(memoryStream);
foreach (var module in tempModuleCatalog.Modules)
{
moduleCatalog.AddModule(module);
}
}
}
}
if (completedCallback != null)
{
completedCallback(moduleCatalog);
}
}