1 日に 1 回だけ実行される単純な Windows サービスがあります。データベースでいくつかのクエリを実行し、適切な html コンテンツ (テーブル、div など) を生成し、電子メールの本文で複数の受信者に送信します。
電子メールの本文は次のように作成されます。
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
メソッドはほとんど同じです。データベースでクエリを実行し、HTMLTextWriter を使用して HTML テーブルを作成し、テーブルを文字列として返します。
このコードは、マルチスレッドまたは async-await パターンを使用して改善できますか? 問題のコードは、StringBuilder オブジェクトに行を追加する場所です。
編集:これまでマルチスレッドを使用したことがないため、質問をしました。それが可能かどうかを知りたかっただけです。その上、プログラムは今では十分に速く実行されます。