У меня странная проблема с многопоточностью в рабочем процессе SharePoint, о которой я хотел бы узнать больше. Я пытаюсь отправить письмо с помощью SPUtility.SendEmail асинхронно, запустив новый поток, чтобы сделать это. Это успешно работает в конце рабочего процесса для сводной электронной почты. Я попытался сделать то же самое, чтобы заменить электронное письмо с уведомлением о задаче, но в итоге получил следующую ошибку:
Microsoft.SharePoint.SPException:
Попытка звонить на более чем
одна нить в однопоточном режиме.
Единственное отличие, которое я могу себе представить, заключается в том, что задача находится внутри действия репликации, поэтому она может создать несколько таких задач (хотя при тестировании это создает только одну). Что конкретно делает закулисное действие, которое может вызвать эту ошибку при попытке создать новый поток?
[Примечание]
Причина, по которой я использую потоки для отправки электронных писем, заключается в том, что SPUtility.SendEmail является блокирующим вызовом, а в случае медленного SMTP-сервера пользователь может получить свою страницу обратно в течение минуты. И причина, по которой я отправляю электронные письма, в первую очередь в том, что стандартные сообщения электронной почты отстойные.