2012-03-07 2 views
0

아래 코드를 가지고 있는데, 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

왜 별도의 스레드를 사용해야합니까? – Oded

+0

전자 메일을 보내는 동안 주 스레드를 차단하지 않습니다. – Tomas

답변

2

가비지 수집은 여러 스레드에서 작동하므로 문제가되지 않아야합니다.

소스 코드를 FileStream으로 처분합니까 (또는 using 블록으로 감쌀 것입니까?). 그러면 파일 스트림에 액세스하려고 할 때 파일 스트림이 이미 삭제되었으므로 문제 일 수 있습니다.

정확한 예외 메시지는 문제의 정확한 위치를 찾는 데 도움이됩니다.

+0

* 사용 * :) – Tomas