0
在網頁上,我啓動並行進程來執行長時間運行的任務,然後發送電子郵件以跟蹤其「輸出」。 但是線程有時似乎在發送電子郵件之前就結束了(電子郵件是我唯一的線索),我認爲這可能與超時有關。Asp.Net:executionTimeout +並行線程
下面的代碼:
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();
你認爲這是涉及到一些超時?我可以在不允許通常的請求永久運行的情況下更改它嗎?
我看到兩個選項。線程正常結束或拋出異常。如果拋出異常,執行將不會繼續,並且您的消息將不會被髮送。如果執行完成,也許這是SMTP服務器的配置問題等等,我會先在'catch'塊中做一些類型的日誌記錄。 – 2013-04-08 10:51:11