Я пишу приложение, которое отправляет много электронных писем в течение жизненного цикла приложения.
Пользователи жаловались, что приложение действительно не отвечает и в целом работает медленно.Единственное, что я мог придумать в качестве причины, была тяжелая отправка электронной почты.Поэтому я решил, что смогу решить эту проблему, отправив электронные письма в другой ветке!
Я использую метод SendEmail в вспомогательном классе SPUtility.Прямо сейчас у меня есть метод, который выглядит следующим образом:
public static void SendEmail(SPWeb web, string to, string subject, string body)
{
//Some logic goes here
System.Threading.ThreadPool.QueueUserWorkItem(o =>
{
SPUtility.SendEmail(web, false, false, to, subject, body, false);
});
}
Этот метод определен в DLL, и он вызывается из множества разных веб-частей.
Но это не такза работой.Если я удаляю бит QueueUserWorkItem и просто позволяю ему отправлять электронные письма вне потока, он работает как чудо, но с другой стороны, он медленный.
Как я могу решить эту проблему?