Я использую код MAPI Dave Brooks.
Я пытаюсь программно отослать Кристаллический Отчет, который сгенерирован.
То, когда я пробегаю код, не распараллеливая все, хорошо работает. Проблема состоит в том, когда я использую поточную обработку, я получаю ошибку возврата "Общий отказ MAPI [2]".
Я никогда не использовал поточную обработку прежде и понимаю, что существуют включенные опасности. Кто-либо может обеспечить понимание этой проблемы?Примечание: У меня есть обработка удаленной исключительной ситуации для создания кода более четким.
Private Sub RunReport()
SetParameters()
SaveReportFile()
Dim operation As New ThreadStart(AddressOf SendEmail)
Dim theThread As New Thread(operation)
theThread.Start()
End Sub
Public Sub SendEmail()
Dim m As MAPI
m = New MAPI()
Dim email As String
For Each email In emailAddress
m.AddRecipientBCC(email)
Next email
m.AddAttachment(@"c:\temp\report.pdf")
m.SendMailPopup("Requested Report", "")
End Sub
Очень поздний ответ, но подумал, что добавлю его в любом случае, как я только что столкнулся с этим и не смог найти ответ в другом месте.
Вам необходимо установить состояние вашей темы в STA, прежде чем начнется с использованием:
theThread.SetApartmentState(ApartmentState.STA);
Обратите внимание, что потоки из ThreadPool (например, используемые компонентом BackgroundWorks), являются MTA.