private void FetchNextLevelOfMailboxesAsync(string root, AccountStateObject stateObject)
        {
            new Thread(() =>
            {
                try {
                    using (var client = CreateClientByAccount(stateObject.Account)) {
                        // get next level


                        var wildcards = (root + "/%").TrimStart('/');
                        var response  = client.LSub("", wildcards);
                        var converted = response.Mailboxes.Select(x => new Mailbox {
                            Fullname = x.Name, Name = ExtractName(x.Name, x.Delimiter), AccountState = stateObject
                        });

                        var key = stateObject.Account.Name + "/" + root;
                        AddMailboxToTreeSafely(converted, key);
                        stateObject.IsBusy = false;
                    }
                }
                catch (Exception ex) {
                    LogSafely(ex.Message);
                }
            }).Start();
        }
        private void StoreNodeForFastLookup(AccountStateObject stateObject, TreeNode node, string mailboxName)
        {
            var key = stateObject.Account.Name + "/" + mailboxName;

            if (!_activityPendingNodes.ContainsKey(key))
            {
                _activityPendingNodes.Add(key, node);
            }
        }
 private void StoreNodeForFastLookup(AccountStateObject stateObject, TreeNode node, string mailboxName)
 {
     var key = stateObject.Account.Name + "/" + mailboxName;
     if (!_activityPendingNodes.ContainsKey(key)) {
         _activityPendingNodes.Add(key, node);
     }
 }
        private void FetchNextLevelOfMailboxesAsync(string root, AccountStateObject stateObject)
        {
            new Thread(() =>
                           {
                               try {
                                   using (var client = CreateClientByAccount(stateObject.Account)) {
                                       // get next level

                                       var wildcards = (root + "/%").TrimStart('/');
                                       var response = client.LSub("", wildcards);
                                       var converted = response.Mailboxes.Select(x => new Mailbox {Fullname = x.Name, Name = ExtractName(x.Name, x.Delimiter), AccountState = stateObject});

                                       var key = stateObject.Account.Name + "/" + root;
                                       AddMailboxToTreeSafely(converted, key);
                                       stateObject.IsBusy = false;
                                   }
                               }
                               catch (Exception ex) {
                                   LogSafely(ex.Message);
                               }
                           }).Start();
        }