2017-05-10 10 views
5

मैं ऐसा करते हैं तो:MailMessage.SendAsync का इंतजार कैसे करें?

public async Task<SendEmailServiceResponse> ExecuteAsync(SendEmailServiceRequest request) 
    { 
     .... 
     var response = new SendEmailServiceResponse(); 
     await client.SendAsync(mail, null); // Has await 
     response.success = true; 
     return response; 
    } 

तो मैं मिलता है इस:

का इंतजार नहीं कर सकता 'शून्य'

लेकिन अगर मैं ऐसा करते हैं:

public async Task<SendEmailServiceResponse> ExecuteAsync(SendEmailServiceRequest request) 
    { 
     .... 
     var response = new SendEmailServiceResponse(); 
     client.SendAsync(mail, null); // No Await 
     response.success = true; 
     return response; 
    } 

मैं इसे प्राप्त करें:

एसिंक विधि में 'प्रतीक्षा' की कमी है और यह सिंक्रनाइज़ हो जाएगी।

मुझे स्पष्ट रूप से कुछ याद आ रहा है, बस यह सुनिश्चित नहीं है कि क्या।

+2

इसके नाम के बावजूद उपयोग करने की आवश्यकता, SendAsync नहीं है async विधि (async \ await के संदर्भ में), क्योंकि यह कार्य वापस नहीं करता है। – Evk

+1

संक्षिप्त उत्तर .. आप नहीं करते हैं। यह एपीआई के संदर्भ में एक सिंक्रोनस विधि है। – Mardoxx

+0

तो .... ईमेल एसिंक भेजने के लिए संभव नहीं है? –

उत्तर

5

जैसा कि अन्य ने SendAsync को इंगित किया है थोड़ा भ्रामक है। यह void देता है, Task नहीं। आप await को एक भेजें मेल कॉल चाहते हैं तो आप विधि

SendMailAsync(MailMessage message) 

या

SendMailAsync(string from, string recipients, string subject, string body) 

इन दोनों एक Task लौट सकते हैं और समय से प्रतीक्षा की जा सकती है

+0

यह सही जवाब नहीं है! 'Async विधि में' प्रतीक्षा 'की कमी है और यह तुल्यकालिक रूप से चलाएगा। इसका अर्थ यह है कि विधि में कोई प्रतीक्षा कॉल नहीं है जिसे अभी तक "async" के रूप में चिह्नित किया गया है, SendAsync को कॉल के साथ कोई समस्या नहीं है। –

+1

मेरा उत्तर ओपी की 'ExecuteAsync()' विधि से 'async' कीवर्ड को हटाने के रूप में मान्य है। मैंने ओपी के पद से अनुमान लगाया कि वे एसिंक/प्रतीक्षा पैटर्न का उपयोग करना चाहते थे इसलिए मैंने ओपी को एक समाधान दिया जो एसिंक/प्रतीक्षा पैटर्न का उपयोग करता था। – maccettura

+0

इसका मतलब यह नहीं है कि SendAsync को कॉल प्रतीक्षा कीवर्ड का उपयोग न करने के कारण गलत है, जो ओपी सुझाव देता है। –

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