Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ SendMailAsync() [2/4]

Task System.Net.Mail.SmtpClient.SendMailAsync ( MailMessage message,
CancellationToken cancellationToken )
inline

Definition at line 695 of file SmtpClient.cs.

696 {
697 if (cancellationToken.IsCancellationRequested)
698 {
700 }
703 int state = 0;
704 SendCompletedEventHandler handler = null;
705 handler = delegate(object sender, AsyncCompletedEventArgs e)
706 {
707 if (e.UserState == tcs)
708 {
709 try
710 {
711 ((SmtpClient)sender).SendCompleted -= handler;
712 if (Interlocked.Exchange(ref state, 1) != 0)
713 {
714 ctr.Dispose();
715 }
716 }
717 catch (ObjectDisposedException)
718 {
719 }
720 finally
721 {
722 if (e.Error != null)
723 {
724 tcs.TrySetException(e.Error);
725 }
726 else if (e.Cancelled)
727 {
728 tcs.TrySetCanceled();
729 }
730 else
731 {
732 tcs.TrySetResult();
733 }
734 }
735 }
736 };
737 SendCompleted += handler;
738 try
739 {
740 SendAsync(message, tcs);
741 }
742 catch
743 {
744 SendCompleted -= handler;
745 throw;
746 }
747 ctr = cancellationToken.Register(delegate(object s)
748 {
749 ((SmtpClient)s).SendAsyncCancel();
750 }, this);
751 if (Interlocked.Exchange(ref state, 1) != 0)
752 {
753 ctr.Dispose();
754 }
755 return tcs.Task;
756 }
SendCompletedEventHandler? SendCompleted
void SendAsync(string from, string recipients, string? subject, string? body, object? userToken)
static int Exchange(ref int location1, int value)
static Task FromCanceled(CancellationToken cancellationToken)
Definition Task.cs:3363
delegate void SendCompletedEventHandler(object sender, AsyncCompletedEventArgs e)

References System.Net.Mail.SmtpClient.SmtpClient(), System.cancellationToken, System.ComponentModel.AsyncCompletedEventArgs.Cancelled, System.Threading.CancellationTokenRegistration.Dispose(), System.ComponentModel.AsyncCompletedEventArgs.Error, System.Threading.Interlocked.Exchange(), System.Threading.Tasks.Task< TResult >.FromCanceled(), System.s, System.Net.Mail.SmtpClient.SendAsync(), System.Net.Mail.SmtpClient.SendCompleted, System.Net.Mail.SendCompletedEventHandler(), System.state, System.Threading.Tasks.TaskCompletionSource< TResult >.Task, System.Threading.Tasks.TaskCompletionSource< TResult >.TrySetCanceled(), System.Threading.Tasks.TaskCompletionSource< TResult >.TrySetException(), System.Threading.Tasks.TaskCompletionSource< TResult >.TrySetResult(), and System.ComponentModel.AsyncCompletedEventArgs.UserState.