public void LoadModuleType(ModuleInfo moduleInfo) { if (moduleInfo == null) { throw new System.ArgumentNullException("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 { string path; if (moduleInfo.Ref.StartsWith(RefFilePrefix + "/", StringComparison.Ordinal)) { path = moduleInfo.Ref.Substring(RefFilePrefix.Length + 1); } else { path = moduleInfo.Ref.Substring(RefFilePrefix.Length); } 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); moduleInfo.Assembly = assemblyResolver.LoadAssemblyFrom(moduleInfo.Ref); // 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); } }
public override void LoadModule(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 (m_downloadedUris.Contains(uri)) { RaiseLoadModuleCompleted(moduleInfo, null); } else { var path = uri.LocalPath; 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); m_assemblyResolver.LoadAssemblyFrom(moduleInfo.Ref); // 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. m_downloadedUris.Add(uri); RaiseLoadModuleCompleted(moduleInfo, null); } } catch (Exception ex) { RaiseLoadModuleCompleted(moduleInfo, ex); } }