我从ajax
调用一个名为 -validSendPass
的静态方法
[WebMethod]
public static string validSendPass(string em)
在这种方法中,我需要创建电子邮件类并调用发送异步电子邮件的方法
classes.email ems = new classes.email();
ems.sendPassword(myemail, my email name, user email, user name, password, "Your password", pas);
此方法:
var fromAddress = new MailAddress(fromem, fromname);
var toAddress = new MailAddress(toem, toname);
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
Timeout = 20000
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
try { smtp.Send(message); }
catch { }
}
为此,我将smtp.Send替换为smtp.SendMailAsync或smtp SendAsync,添加异步。
我如何更改此代码 - 从静态方法调用异步方法?
答案 0 :(得分:2)
你不能。你问的是如何同步调用异步方法。如果你使它同步,则它不再是异步的。
您可以阻止该方法,直到异步操作完成,但如果您这样做,那么您将首先打败使该方法异步的整个目的。
如果你真的需要最终结果是同步的,只需将所有内容从上到下保持同步,并且不要在任何地方使用任何异步方法。如果您要使用异步,则需要使所有异步,一直向上,以获得任何好处。