При необходимости выполняется некоторый код в фоновом потоке


Это хороший метод, чтобы при необходимости запустить код в фоновом потоке в зависимости от параметра конфигурации? Это в первую очередь можно назвать с переднего плана ASP.NET (хотя возможны и другие варианты) в рамках 3.5. Я пытаюсь сохранить это как можно более сухим.

Dim sendEmails = Sub() 
                     Dim emailToSend As New SendEmailRequest() 
                     TransferCommonValuesTo(emailToSend, request, sendingUser) 
                     usersToSendEmailTo.ForEach(Sub(u) 
                                                    TransferValuesTo(emailToSend, u, m_EmailMessageMerger.GetMergedMessage(request.Message, u)) 
                                                    m_EmailSender.Send(emailToSend) 
                                                End Sub) 
                 End Sub 


If cfg.SendBulkEmailUsingBackgroundThread Then 
    Dim worker As New Thread(sendEmails) 
    worker.IsBackground = True 
    worker.Start() 
Else 
    sendEmails() 
End If


250
1
задан 28 августа 2011 в 04:08 Источник Поделиться
Комментарии
1 ответ

Может быть.

Зависит, как всегда, что произойдет, если вы получите несколько запущенных потоков.

Итак, вы начинаете эту ветку идти, ваш код будет двигаться дальше, и если вы начнете это снова, и он еще не закончил предыдущий раунд отправки электронных писем. Что происходит?

Если его все потокобезопасным, то нет проблем, но он может отправить несколько писем из строя.
Если его не потокобезопасен, то веселье ( или бедствия ) вытекает :-)

2
ответ дан 29 августа 2011 в 05:08 Источник Поделиться