我正在使用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);
}
});
}
}
在这种情况下,如何优化代码?我在做什么错了?
答案 0 :(得分:0)
内存来自您的MailMessage对象。完成后,需要将其处置。