gpt4 book ai didi

.net - .NET 3.5 中的 SmtpClient SendAsync

转载 作者:行者123 更新时间:2023-12-01 08:59:01 25 4
gpt4 key购买 nike

这个问题是关于 .NET 3.5 中的 SmtpClient 的。我知道 .NET 4 中的处置更改,但目前无法进行迁移。

我想知道如果您使用 sendasync 并且 smtpclient 超出范围,smtpclient 会发生什么情况。示例:

public void SendSomething(){
SmtpClient smtp = new SmtpClient(...);
smtp.SendCompleted += SendCompletedCallback;
smtp.SendAsync(...);
}

private void SendCompletedCallback(object sender, AsyncCompletedEventArgs e){
...
}

如果你发送这样的东西会发生什么,对象超出方法的范围并且 smtpclient 有点慢并且现在才开始实际发送:这会产生任何问题吗?或者 smtpclient 是否保护自己不被垃圾收集等?

根据 msdn 文档,您不能在另一个 sendasync 尚未完成时执行 sendasync。但是,如果您创建两个 smtpclients 并同时执行 sendasync(例如,两个线程同时调用 SendSomething() 方法)会发生什么情况。它能解决这个问题还是会产生问题?

另一个问题:当前在 .NET 3.5 中,smtp 客户端在完成后不会发送退出命令。这在 .NET 4 中已通过处置修复。但是这个错误有多糟糕:如果不发送退出命令,它会导致 smtp 服务器出现问题吗?或者这是他们应该能够处理的事情?

最佳答案

只要异步操作正在执行,SmtpClient 就会被方法框架或回调委托(delegate)引用。
别担心。

多个SmtpClient不会互相干扰。

关于.net - .NET 3.5 中的 SmtpClient SendAsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8822548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com