コード例 #1
0
ファイル: XapModuleTypeLoader.cs プロジェクト: eslahi/prism
        private void OnDownloadCompleted(object o, DownloadCompletedEventArgs e)
        {
            ((IFileDownloader)o).DownloadCompleted -= this.OnDownloadCompleted;
            Exception error = e.Error;

            if (e.Error == null)
            {
                try
                {
                    Debug.Assert(!e.Cancelled, "Download should not be cancelled");
                    Stream stream = e.Result;

                    foreach (AssemblyPart part in GetParts(stream))
                    {
                        LoadAssemblyFromStream(stream, part);
                    }
                }
                catch (Exception ex)
                {
                    error = ex;
                }
                finally
                {
                    e.Result.Close();
                }
            }

            List <ModuleTypeLoaderCallbackMetadata> callbacks;

            lock (this.typeLoadingCallbacks)
            {
                Uri requestUri = (Uri)e.UserState;
                Debug.Assert(requestUri != null, "UserState should hold a reference to the request uri");
                callbacks = this.typeLoadingCallbacks[requestUri];
                this.typeLoadingCallbacks.Remove(requestUri);
            }

            foreach (ModuleTypeLoaderCallbackMetadata loaderCallbackMetadata in callbacks)
            {
                loaderCallbackMetadata.Callback(loaderCallbackMetadata.ModuleInfo, error);
            }
        }
コード例 #2
0
ファイル: XapModuleTypeLoader.cs プロジェクト: eslahi/prism
        private void OnDownloadCompleted(object o, DownloadCompletedEventArgs e)
        {
            ((IFileDownloader)o).DownloadCompleted -= this.OnDownloadCompleted;
            Exception error = e.Error;
            if (e.Error == null)
            {
                try
                {
                    Debug.Assert(!e.Cancelled, "Download should not be cancelled");
                    Stream stream = e.Result;

                    foreach (AssemblyPart part in GetParts(stream))
                    {
                        LoadAssemblyFromStream(stream, part);
                    }
                }
                catch (Exception ex)
                {
                    error = ex;
                }
                finally
                {
                    e.Result.Close();
                }
            }

            List<ModuleTypeLoaderCallbackMetadata> callbacks;
            lock (this.typeLoadingCallbacks)
            {
                Uri requestUri = (Uri)e.UserState;
                Debug.Assert(requestUri != null, "UserState should hold a reference to the request uri");
                callbacks = this.typeLoadingCallbacks[requestUri];
                this.typeLoadingCallbacks.Remove(requestUri);
            }

            foreach (ModuleTypeLoaderCallbackMetadata loaderCallbackMetadata in callbacks)
            {
                loaderCallbackMetadata.Callback(loaderCallbackMetadata.ModuleInfo, error);
            }
        }
コード例 #3
0
 public void InvokeOpenReadCompleted(DownloadCompletedEventArgs args)
 {
     DownloadCompleted.Invoke(this, args);
 }