【发布时间】:2019-06-03 01:41:28
【问题描述】:
我有两种通过电子邮件和短信异步发送 otp 的方法。
现在,我从我的同步事件处理程序方法中调用它们。
这很好用。我通过 SMS 和电子邮件收到 OTP。但我想知道它是否正确,或者我应该让我的事件异步并等待两种方法发送 otp。
请注意,我的异步方法不需要任何结果/返回值。我只需要他们尽自己的一份力量。
我在网上搜索过答案,但没有人能解开我的疑问。 请帮忙。我是异步/等待的新手。
public async Task SendEmail(int otp) {}
public async Task SendSMS(int otp) {}
protected void SendOTP_OnClick(object sender, EventArgs e){
// Do Something with database...
int otp=1234;
SendEmail(otp);
SendSMS(otp);
}
【问题讨论】:
-
在这种情况下,您将一劳永逸地使用这两种方法。如果它们抛出异常,您永远不会知道,或者您必须在这些方法中添加适当的异常处理。
SendOTP_OnClick将调用 SendEmail 和 SendSMS,当它们自己等待异步操作时它们都应该返回,然后 SendOTP_OnClick 将在这些方法完成之前继续。 -
基本上,执行将在它们完成之前继续。如果您不需要任何返回值,那很好,但您不确定它们何时完成。如果这是长期运行的任务,您可能需要等待它们,因为您可能需要该信息来处理其他一些事情。
-
嗨 Lasse 和 Harun,就我而言,我在每个方法中都有异常处理代码,我在其中记录异常。所以如果不在 SendOTP_OnClick 中等待他们,我的邮件和短信会被发送吗? (只要不出现异常)
标签: c# asp.net async-await