Отправка Многопоточного запроса SendEmail возвращает генерала Mapi Failure

Я использую код 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

6
задан MPelletier 5 May 2012 в 04:55
поделиться

1 ответ

Очень поздний ответ, но подумал, что добавлю его в любом случае, как я только что столкнулся с этим и не смог найти ответ в другом месте.

Вам необходимо установить состояние вашей темы в STA, прежде чем начнется с использованием:

theThread.SetApartmentState(ApartmentState.STA);

Обратите внимание, что потоки из ThreadPool (например, используемые компонентом BackgroundWorks), являются MTA.

7
ответ дан 8 December 2019 в 18:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: