From 5d545f6da57534b065e1a28430a2dadad0ec632b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=84=E3=81=88=E3=81=AA=E3=81=84?= Date: Wed, 26 Aug 2020 19:40:34 +0800 Subject: [PATCH] minor optimization --- Bililive_dm/App.xaml.cs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Bililive_dm/App.xaml.cs b/Bililive_dm/App.xaml.cs index b6e84d4..78bfadc 100644 --- a/Bililive_dm/App.xaml.cs +++ b/Bililive_dm/App.xaml.cs @@ -93,13 +93,14 @@ private void AddArchSpecificDirectory() private void Application_Startup(object sender, StartupEventArgs e) { - var ms = new MemoryStream(); + var assemblies = new Dictionary(StringComparer.OrdinalIgnoreCase); AppDomain.CurrentDomain.AssemblyResolve += (_, args) => { - var name = new AssemblyName(args.Name); + var an = new AssemblyName(args.Name); + var name = an.Name; - switch (name.Name) + switch (name) { case "PresentationTheme.Aero": case "PresentationTheme.Aero.Win8": @@ -108,16 +109,18 @@ private void Application_Startup(object sender, StartupEventArgs e) return null; } + if (assemblies.TryGetValue(name, out var assembly)) return assembly; - ms.Position = 0; - using (var rs = Assembly.GetExecutingAssembly().GetManifestResourceStream($"Bililive_dm.Assets.{name.Name}.dll.gz")) + var ms = new MemoryStream(); + using (var rs = Assembly.GetExecutingAssembly().GetManifestResourceStream($"Bililive_dm.Assets.{name}.dll.gz")) using (var zs = new GZipStream(rs, CompressionMode.Decompress)) zs.CopyTo(ms); - var data = new byte[ms.Position]; + var data = new byte[ms.Length]; ms.Position = 0; ms.Read(data, 0, data.Length); - return Assembly.Load(data); + + return assemblies[name] = Assembly.Load(data); }; AeroWin8 = (ResourceDictionary)Resources["Win8"];