So rufen Sie eine Methode asynchron auf

Ich habe versucht, diesem Link zu folgenAsynchroner Anruf Einige Klassen sind jedoch veraltet.
Ich möchte also eine genaue Antwort für mein Projekt.

<code>public class RegisterInfo
{
    public bool Register(UserInfo info)
    {
        try
        {
            using (mydatabase db = new mydatabase())
            {
                userinfotable uinfo = new userinfotable();
                uinfo.Name = info.Name;
                uinfo.Age = info.Age;
                uinfo.Address = info.Address;

                db.userinfotables.AddObject(uinfo);
                db.SaveChanges();

                // Should be called asynchronously
                Utility.SendEmail(info); // this tooks 5 to 10 seconds or more.

                return true;
            }
        }
        catch { return false; }
    }
} 

public class UserInfo
{
    public UserInfo() { }

    public string Name { get; set; }
    public int Age { get; set; }
    public string Address { get; set; }
}  

public class Utility
{
    public static bool SendEmail(UserInfo info)
    {
        MailMessage compose = SomeClassThatComposeMessage(info);
        return SendEmail(compose);
    }

    private static bool SendEmail(MailMessage mail)
    {
        try
        {
            SmtpClient client = new SmtpClient();
            client.Host = "smtp.something.com";
            client.Port = 123;
            client.Credentials = new System.Net.NetworkCredential("[email protected]", "password");
            client.EnableSsl = true;

            ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);
            client.Send(mail);

            return true;
        }
        catch { return false; }
    }
}    
</code>

Bitte schauen Sie sich das anRegister Methode. Nach dem Speichern der Daten möchte ich nicht auf den Versand von E-Mails warten. Wenn möglich, möchte ich das Senden von E-Mails in einem anderen Thread verarbeiten, damit der Benutzer nicht länger wartet.
Ich muss nicht wissen, ob die Mail erfolgreich gesendet wurde.
Hoffe du konntest verstehen was ich meine. Entschuldigung für mein schlechtes Englisch.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage