From 2ecd990a9ec6b5fb16649da8ec75177d211ff987 Mon Sep 17 00:00:00 2001 From: indiff Date: Fri, 15 Mar 2024 16:48:19 +0800 Subject: [PATCH] =?UTF-8?q?fix.=E8=A2=AB=E5=9E=83=E5=9C=BE=E5=9B=9E?= =?UTF-8?q?=E6=94=B6=E5=99=A8=EF=BC=88Garbage=20Collector,=20GC=EF=BC=89?= =?UTF-8?q?=E5=9B=9E=E6=94=B6=E7=9A=84=20COM=20=E5=AF=B9=E8=B1=A1=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- QTTabBar/ShellBrowserEx.cs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/QTTabBar/ShellBrowserEx.cs b/QTTabBar/ShellBrowserEx.cs index 1b1a58d..812ce7e 100644 --- a/QTTabBar/ShellBrowserEx.cs +++ b/QTTabBar/ShellBrowserEx.cs @@ -331,10 +331,22 @@ internal void SetStatusText(string status) { public void SetUsingListView(bool listview) { if(shellBrowser != null) { - IFolderViewOptions fvo = shellBrowser as IFolderViewOptions; - if(fvo != null) { - fvo.SetFolderViewOptions(FVO.VISTALAYOUT, listview ? FVO.VISTALAYOUT : FVO.DEFAULT); - } + try // add by indiff 2023.03.15 + { + // System.Runtime.InteropServices.InvalidComObjectException: COM 对象与其基础 RCW 分开后就不能再使用。 + IFolderViewOptions fvo = shellBrowser as IFolderViewOptions; + if(fvo != null) { + fvo.SetFolderViewOptions(FVO.VISTALAYOUT, listview ? FVO.VISTALAYOUT : FVO.DEFAULT); + } + } + catch (COMException e) + { + QTUtility2.MakeErrorLog(e, " SetUsingListView COMException"); + } + catch (InvalidComObjectException e) + { + QTUtility2.MakeErrorLog(e, " SetUsingListView InvalidComObjectException"); + } // add by indiff 2023.03.15 } }