我想問一下這段代碼是否線程安全? attachment
對象存在問題。它被引用傳遞給新線程,其中MailHelper
使用它,有時attachment
對象在線程之間混合。線程和對象引用
public static void Start()
{
foreach (var message in messages)
{
//skip code
var fileName = httpWebResponse.GetResponseHeader("filename");
var fileStream = httpWebResponse.GetResponseStream();
var attachment = new Attachment(fileStream, fileName);
var thread = new Thread(() =>
{
var dictionary = new ListDictionary
{
{ "$Url$", message.Url }
};
MailHelper.SendMessage(dictionary,
message.Mail.Headers.From.Address,
"EmailConvertSuccess.txt",
attachment)
});
thread.Start();
}
}
像評論說,消息對象是混合在線程之間。附件狀態是未知的,可能是奇怪的,但不是問題。 – CodingBarfield 2012-03-08 08:27:56