同步SmtpClient发送,不会命中SendCompleted处理程序

Ola*_*cea 3 c#

 SmtpClient client = new SmtpClient("my.server.com");
Run Code Online (Sandbox Code Playgroud)

我像往常一样创建客户端并发送电子邮件.一切正常,电子邮件正确地到达框中.

我还想在SendCompleted事件处理程序中的代码中做一些工作.

  client.SendCompleted += client_SendCompleted;
Run Code Online (Sandbox Code Playgroud)

我没有async选项就开始工作了,

client.Send(message);
Run Code Online (Sandbox Code Playgroud)

但这样,我的处理程序代码永远不会被击中.

如果我选择client.SendAsync(),事件处理程序将被执行,但我必须做一些同步才能使它正确,也许有一个更简单的方法来实现它.

所以我的问题是,当我使用send而不是异步时,没有点击处理程序是正常的吗?

Bri*_*oll 6

如果要同步发送,则完成的处理程序将永远不会触发,因为只有异步调用才会触发关联的事件.

在同步调用中,只需在调用Send后放入您在处理程序中放入的代码:

client.Send(message);
//TODO: Put your handler code here.
Run Code Online (Sandbox Code Playgroud)