我注意到,大多數使用.NET的SmtpClient類的示例代碼不會處理創建的對象或將其包裝在使用塊中。 (例如http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx)SmtpClient的配置是可選的還是不是很重要,或者是導致我們走錯路徑的例子?注意:在上面提供的MSDN示例中,MailMessage被放置,但不是SmtpClient對象。使用SmtpClient和IDisposable
回答
很多在線的例子沒有顯示正確的配置代碼的原因是SmtpClient didn't implement IDisposable until .NET 4。所以這些例子可以基於以前的框架,或者由不熟悉新功能的人編寫。
Msdn示例省略了這樣的事情,因爲重點是要在一篇小文章中清楚地展示一個概念,而不是寫一個正確的健壯的生產應用程序。
你必須處置它。
在這個例子中,他們使用SendAsync(),這就是爲什麼他們不使用「使用」關鍵字 - SendAsync()立即返回,你可能會嘗試處理一個當前正在使用的對象。但是,當完成所有異步方法時最好處理客戶端。
我真的不得不學習更快的類型:P Exaclty,如果你看一下「Dispose()」的文檔,你會發現如果它的請求提前,它就會發出請求。 (也許)他們錯過了異步處理程序結尾處的「sender.Dispose()」。但我認爲垃圾收集器將能夠處理這個問題。 –
cource GC會處理這個問題,但是實現IDisposable的原因是爲了釋放一些操作系統或外部資源,可以在垃圾收集之前的早期部署對象。 –
- 1. 實施和使用IDisposable的
- 2. 使用IDisposable
- 3. StructureMap InstanceScope.Hybrid和IDisposable
- 4. WebControls和IDisposable
- 5. IDisposable和WCF
- 6. IDbTransaction和IDisposable
- 7. IDisposable和COM
- 8. 使用SMTPClient發送傳真?
- 9. Coverity,Enumerable.Where(this ...)和IDisposable
- 10. Autofac和IDisposable接口
- 11. MonoTouch和IDisposable模式
- 12. C#使用IDisposable或SafeHandle?
- 13. SmtpClient和app.config system.net配置
- 14. 使Windows窗體控件只讀和IDisposable
- 15. 使用SmtpClient發送郵件列表
- 16. 正確處理資源使用SmtpClient
- 17. 在.net中使用SmtpClient發送郵件
- 18. EntLib CacheManager和IDisposable對象
- 19. 測試終結器和IDisposable
- 20. 使用MailMessage和SmtpClient或MessageQueue延遲發送電子郵件
- 21. 用SmtpClient發送郵件
- 22. SmtpClient與Gmail
- 23. SMTPClient類錯誤
- 24. IDisposable Winform
- 25. Impementing IDisposable
- 26. IDisposable鏈
- 27. 使用IDisposable C#的MySQL連接#
- 28. 爲什麼COM對象不使用IDisposable?
- 29. 如何使用IDisposable處置對象
- 30. IDisposable - 使用構造的自動檢查
如果你徘徊它不僅是MSDN的例子。我也認爲這是一個糟糕的概念,因爲許多(大多數?)將逐字地遵循這些例子。 – kenny