Web ページで、並列プロセスを起動して長時間実行されるタスクを実行し、電子メールを送信してその「出力」を追跡します。しかし、メールを送信する前にスレッドが終了することがあります (メールは私が持っている唯一のトラックです)。これはタイムアウトに関連している可能性があります。
ここにコード:
var thread = new Thread(() =>
{
var cli = Factory.GetClient(callBack);
FedDBService.ReturnMessage msg;
try
{
msg = cli.SendFedCards(xmls.ToArray());
}
catch (Exception exe)
{
msg = new FedDBService.ReturnMessage();
msg.Error = exe.Message;
}
finally
{
cli.Close();
completion.Finished = true;
}
message = String.Format(@"{0}Ended: {1: HH:mm} {2} {3}", message, DateTime.Now,
msg.Error.Trim(' ', '\n', '\r', '\t') == "" ?
"Withouth errors" : "With errors:"
, msg.Error);
try
{
golf.classes.Mailing.Mail.sendMail(Club.ClubEmail, email, null,
"***@***.com", message, "**Subject**", false);
// this method works right
}
finally
{
Thread.Sleep(5 * 60 * 1000);
RemoveCompletion(guid);
}
});
thread.Start();
タイムアウトに関連していると思いますか?また、通常のリクエストを永久に実行させずに変更できますか?