0

何か間違っているかどうかはわかりません。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));

すべて正常に動作します。手がかりはありますか?

4

2 に答える 2

0

ネストされたスレッドを実行することになりましたが、問題なく動作します。ありがとうございます。

于 2013-06-26T15:15:59.377 に答える