private async Task <Account> ConnectAccountAsync(string name, TreeNode node) { if (loadingNodes.Contains(node)) { return(null); } var nodeImageKey = node.ImageKey; loadingNodes.Add(node); try { var ret = await accountManager.CreateAccountAsync(name); ret.Tag = node; accounts.Add(name, ret); node.ImageKey = AccountImageKey; node.SelectedImageKey = AccountImageKey; var info = (NodeInfo)node.Tag; info.File = ret.RootFolder; return(ret); } catch (Exception) { node.ImageKey = nodeImageKey; node.SelectedImageKey = nodeImageKey; throw; } finally { loadingNodes.Remove(node); UpdateToolBarAndMenu(); } }