类通过引用和线程传递

时间:2012-03-07 10:42:53

标签: c#

我有以下代码,我将attachment对象传递给SendMessage方法。问题是SendMessage位于另一个thread中,当SendMessage尝试使用attachment时,attachment已被销毁,因为默认情况下将对象作为参考传递。什么是这个问题的最佳解决方案?

var attachment = new Attachment(fileStream, fileName);
new Thread(() => MailHelper.SendMessage(message.Mail.Headers.From.Address, "EmailConvertSuccess.txt", attachment)).Start();

1 个答案:

答案 0 :(得分:2)

垃圾收集在线程之间起作用,因此不应该是问题。

您是否处置了源FileStream(或将其包装在using块中)?那可能是问题所在,因为当您尝试访问文件流时,文件流已经被处理掉了。

确切的异常消息有助于找出问题的确切位置。