У меня есть простой сервис Windows, который работает только один раз в день.Он выполняет некоторые запросы в базе данных, генерирует соответствующий HTML-контент (таблицы, div, ...) и отправляет его в теле письма нескольким получателям.
Тело письма создается следующим образомthis:
private static string GenerateBody()
{
using (var stringWriter = new StringWriter())
using (var htmlWriter = new HtmlTextWriter(stringWriter))
{
htmlWriter.RenderBeginTag("html");
htmlWriter.RenderBeginTag(HtmlTextWriterTag.Head);
htmlWriter.WriteLine("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />");
htmlWriter.RenderEndTag();
htmlWriter.RenderBeginTag("body");
htmlWriter.Write(
new StringBuilder()
.Append(OverviewParagraph.GenerateHTMLContent())
.Append(PackageWeightParagraph.GenerateHTMLContent())
.Append(BoxWeightParagraph.GenerateHTMLContent())
.Append(CodeQualityParagraph.GenerateHTMLContent())
.Append(ChecksParagraph.GenerateHTMLContent())
.ToString()
);
htmlWriter.RenderEndTag();
htmlWriter.RenderEndTag();
return stringWriter.ToString();
}
}
Все методы GenerateHTMLContent
практически одинаковы - они выполняют запрос в моей базе данных, создают таблицу HTML с помощью HTMLTextWriter и возвращают таблицу в виде строки.
Можно ли улучшить этот код с помощью многопоточности или, возможно, шаблона async-await?В рассматриваемом коде я добавляю строки к объекту StringBuilder.
РЕДАКТИРОВАТЬ: я задал вопрос, потому что раньше я никогда не работал с многопоточностью, просто хотел узнать, возможно ли это.Кроме того, теперь программа работает достаточно быстро.