The SmtpClient Class stwierdza, że członkowie instancji nie są bezpieczni dla wątków. Można to zobaczyć, jeśli połączenia są nawiązywane z numerami Send lub SendAsync. Obie metody wywołają wyjątek InvalidOperationException w drugim wywołaniu, jeśli pierwszy jeszcze nie został ukończony.Czy metody SmtpClient.SendMailAsync są bezpieczne dla wątków?
Metoda SendMailAsync, wprowadzona w .NET 4.5, nie wyświetla wyjątku InvalidOperationException jako wyjątku. Czy nowe metody .NET 4.5 implementują jakieś kolejkowanie? Reflector nie jest w stanie rzucić żadnego światła na szczegóły implementacji tej klasy, więc zakładam, że zostało to zaimplementowane w natywnych metodach.
Czy wiele wątków może bezpiecznie wywoływać metodę SendMessageAsync we współużytkowanej instancji klienta SMTP?
Metody, które nie są wątkowo bezpieczne, nie muszą zgłaszać wyjątku, jeśli uzyskasz do nich dostęp z wielu wątków. – svick