Como chamar um método de forma assíncrona
Eu tentei seguir este linkChamada assíncrona mas algumas classes são obsoletas.
Então eu quero uma resposta exata para o meu projeto.
<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>
Por favor, olhe oRegister
método. Depois de salvar os dados, não quero aguardar o envio de mensagens. Se possível, quero processar o envio de mensagens em outro thread para que o usuário não espere mais tempo.
Não preciso saber se o email foi enviado com sucesso.
Espero que você possa entender o que quero dizer. Desculpe pelo meu mau inglês.