Проверка почты в потоке петли выходит из памяти

Я использую задачу CheckMail для проверки почты каждые 15 секунд. Каждый раз, когда эта задача повторяется, память увеличивается. В чем проблема? Я ничего не создаю.

Клиент был внутри потока, поэтому он вызывался каждый раз. После того, как я вынул его, ничего не изменилось. То же самое и со списком отправителей.

            class MailCheckThread
                {
                    private ImapClient Client;
                    private List<string> Senders;

                    //Thread
                    private Task CheckMail;

                    public MailCheckThread()
                    {
                        Client = new ImapClient("imap.gmail.com", 993, Hemail, Hpassword, AuthMethod.Login, true);
                        Senders = APM_SharedClasses.MailSender.Sender();
                        MailTimer_Thread();
                        Console.WriteLine("Creating mail check thread!");
                        CheckMail.Start();
                    }

            private void MailTimer_Thread()
                    {
                        CheckMail = new Task(() =>
                        {
                            while (true)
                            {
                                IEnumerable<uint> uids = Client.Search(
                                SearchCondition.From(Senders[0]));

                                if (uids.Count() > 0)
                                {
                                    MailMessage msg = Client.GetMessage(uids.First());

                                    Console.WriteLine($"Message from : {msg.From} | Subject : {msg.Subject} | Body : {msg.Body}");
                                }
                                Thread.Sleep(15000);
                            }
                        });
                    }
            }

Как я могу оптимизировать код в этом случае? Что я делаю неправильно?

Всего 1 ответ


Память исходит от вашего объекта MailMessage. Вы должны избавиться от него, когда вы закончите с этим.


Есть идеи?

10000