何か間違っているかどうかはわかりません。SmartThreadPool を使用してスレッドを管理しています。この特定のケースでは、SmartThreadPool のインスタンスを呼び出してから、ワーカー アイテム (メールを送信するメソッド) の結果を取得しています。「文字列結果」は、メソッドの出力を受け取ります。OK の場合は OK を示し、それ以外の場合は例外を示します。
SmartThreadPool smartThreadPool = new SmartThreadPool();
String result = (String)smartThreadPool.QueueWorkItem(x => emailHelper.sendEmail(whichMail.Text, emailTo.Text, subject.Text, bodyMsg.Text)).Result;
if (result != "True")
helper.showMessageBox(Properties.Resources.emailNotSent + result, "x");
else
aux.setRadDesktop(Properties.Resources.emailSent, "", false);
問題は、結果を文字列にキャストしているときに遅すぎて、UI が 2 秒ほど中断されることです。理由はわかりません。これを行ってワーカーアイテムの結果を無視すると:
smartThreadPool.QueueWorkItem(x => emailHelper.sendEmail(whichMail.Text, emailTo.Text, subject.Text, bodyMsg.Text));
すべて正常に動作します。手がかりはありますか?