public void LoadModuleType(ModuleInfo moduleInfo) { if (moduleInfo == null) { throw new ArgumentNullException(nameof(moduleInfo)); } try { var uri = new Uri(moduleInfo.Ref, UriKind.RelativeOrAbsolute); // If this module has already been downloaded, I fire the completed event. if (IsSuccessfullyDownloaded(uri)) { RaiseLoadModuleCompleted(moduleInfo, null); } else { var path = moduleInfo.Ref.Substring(RefFilePrefix.Length + 1); var fileSize = -1L; if (File.Exists(path)) { var fileInfo = new FileInfo(path); fileSize = fileInfo.Length; } // Although this isn't asynchronous, nor expected to take very long, I raise progress changed for consistency. RaiseModuleDownloadProgressChanged(moduleInfo, 0, fileSize); _assemblyResolver.LoadAssembly(moduleInfo); // Although this isn't asynchronous, nor expected to take very long, I raise progress changed for consistency. RaiseModuleDownloadProgressChanged(moduleInfo, fileSize, fileSize); // I remember the downloaded URI. RecordDownloadSuccess(uri); RaiseLoadModuleCompleted(moduleInfo, null); } } catch (Exception ex) { RaiseLoadModuleCompleted(moduleInfo, ex); } }