diff --git a/src/Files.App/Shell/ContextMenu.cs b/src/Files.App/Shell/ContextMenu.cs index ed561d0bdd05..f1e406b63ae9 100644 --- a/src/Files.App/Shell/ContextMenu.cs +++ b/src/Files.App/Shell/ContextMenu.cs @@ -254,18 +254,18 @@ public static async Task WarmUpQueryContextMenuAsync() if (loadSubenus) { - LoadSubMenu(hSubMenu); + LoadSubMenu(); } else { - loadSubMenuActions.Add(subItems, () => LoadSubMenu(hSubMenu)); + loadSubMenuActions.Add(subItems, LoadSubMenu); } menuItem.SubItems = subItems; Debug.WriteLine("Item {0}: done submenu", ii); - void LoadSubMenu(HMENU hSubMenu) + void LoadSubMenu() { try { @@ -292,24 +292,25 @@ void LoadSubMenu(HMENU hSubMenu) public async Task LoadSubMenu(List subItems) { - return await owningThread.PostMethod(() => + if (loadSubMenuActions.Remove(subItems, out var loadSubMenuAction)) { - var result = loadSubMenuActions.Remove(subItems, out var loadSubMenuAction); - - if (result) + return await owningThread.PostMethod(() => { try { loadSubMenuAction!(); + return true; } catch (COMException) { - result = false; + return false; } - } - - return result; - }); + }); + } + else + { + return false; + } } private static string? GetCommandString(Shell32.IContextMenu cMenu, uint offset, Shell32.GCS flags = Shell32.GCS.GCS_VERBW)