Exemplo n.º 1
0
        public void DeleteMessages(List <Message> messages)
        {
            // Delete from memory.
            foreach (Message msg in messages)
            {
                MessagesDico.Remove(msg.UniqueKeyString);
                OnMessageRemoved(msg);
            }

            // Delete from database.
            DatabaseManager.DeleteMessages(messages);

            // Delete from server.
            Task.Run(() => {
                while (messages.Count > 0)
                {
                    Account account = AccountManager.Instance.GetAccountByName(messages[0].AccountName);

                    List <Message> accountMessages = new List <Message>();
                    for (int i = messages.Count - 1; i >= 0; --i)
                    {
                        Message msg = messages[i];
                        if (msg.AccountName == account.AccountName)
                        {
                            accountMessages.Add(msg);
                            messages.RemoveAt(i);
                        }
                    }

                    ImapClient imapClient = new ImapClient(account);
                    if (imapClient.Connect())
                    {
                        imapClient.DeleteMessages(accountMessages);
                        imapClient.Disconnect();
                    }
                }
            });
        }
        public void DeleteMessages(List<Message> messages)
        {
            // Delete from memory.
            foreach (Message msg in messages)
            {
                MessagesDico.Remove(msg.UniqueKeyString);
                OnMessageRemoved(msg);
            }

            // Delete from database.
            DatabaseManager.DeleteMessages(messages);

            // Delete from server.
            Task.Run(() => {
                while (messages.Count > 0)
                {
                    Account account = AccountManager.Instance.GetAccountByName(messages[0].AccountName);

                    List<Message> accountMessages = new List<Message>();
                    for (int i = messages.Count - 1; i >= 0; --i)
                    {
                        Message msg = messages[i];
                        if (msg.AccountName == account.AccountName)
                        {
                            accountMessages.Add(msg);
                            messages.RemoveAt(i);
                        }
                    }

                    ImapClient imapClient = new ImapClient(account);
                    if (imapClient.Connect())
                    {
                        imapClient.DeleteMessages(accountMessages);
                        imapClient.Disconnect();
                    }
                }
            });
        }