2011-04-14 17 views
9

जब मैं ईमेल भेजने के लिए SmtpClient's SendAsync का उपयोग करता हूं, तो मैं smtpclient उदाहरण का सही तरीके से निपटान कैसे करूं?SendComplete में SmtpClient का निपटान करें?

मान लीजिए:


MailMessage mail = new System.Net.Mail.MailMessage() 
{ 
    Body = MailBody.ToString(), 
    IsBodyHtml = true, 
    From = new MailAddress(FromEmail, FromEmailTitle), 
    Subject = MailSubject 
}; 
mail.To.Add(new MailAddress(i.Email, "")); 
SmtpClient sc = new SmtpClient(SmtpServerAddress); 
//Add SendAsyncCallback to SendCompleted 
sc.SendCompleted += new SendCompletedEventHandler(SendAsyncCallback); 
//using SmtpClient to make async send (Should I pass sc or mail into SendAsyncCallback?) 
sc.SendAsync(mail, sc); 

SendAsyncCallback विधि में, मैं sc.Dispose(), या mail.Dispose() बुलाना चाहिए?

मैंने एमएसडीएन दस्तावेज़ की जांच की, एक उदाहरण MailMessage.Dispose() को कॉल करता है, लेकिन क्या यह निपटान विधि SmtpClient इंस्टेंस का निपटान भी करेगी?

बहुत धन्यवाद।

उत्तर

4

आपको और दोनों को SendAsyncCallback में निपटाना चाहिए।

MailMessage का निपटान स्वचालित रूप से SmtpClient का निपटान नहीं करेगा (क्योंकि आप एक ही SmtpClient के साथ दो संदेश भेजना चाहते हैं, और आप क्लाइंट को पहले संदेश का निपटारा करने के तुरंत बाद निपटाना नहीं चाहते हैं)।

0

यह उदाहरण: SmtpClient.SendAsync Method

message.Dispose(); 

मैं इस मामले की छानबीन चल रहा था इस सवाल का जहां भेजने था में निर्दिष्ट: MSDN लाइब्रेरी प्रलेखन केवल संदेश इसलिए मैं यह है कि मेरे कार्यान्वयन में साथ जा रहा हूँ बंद कर देता है से हमेशा रद्द किया जा रहा है इसलिए मैं अपना उपयोग {} कथन का उपयोग कर रहा हूं: SmtpClient.SendAsync Calls are Automatically Cancelled

ठीक है, मैंने अभी संदेश जारी करने का प्रयास किया है।() और यह भी त्रुटि को फेंक रहा था कि यह संदेश के कारण ईमेल नहीं भेज सका निपटान किया जा रहा है। संभवतः क्योंकि मेरा एएसपीनेट एमवीसी ऐप है और उदाहरण एक कंसोल ऐप है। किसी भी मामले में कचरा कलेक्टर को इन विकल्पों को चुनना चाहिए जब सब कुछ गुंजाइश से बाहर हो जाता है ...

संबंधित मुद्दे