मैं नीचे दी गई विधि है:मैं एक Async विधि को एक Async विधि से कैसे कॉल करूं?
public string RetrieveHolidayDatesFromSource() {
var result = this.RetrieveHolidayDatesFromSourceAsync();
/** Do stuff **/
var returnedResult = this.TransformResults(result.Result); /** Where result gets used **/
return returnedResult;
}
private async Task<string> RetrieveHolidayDatesFromSourceAsync() {
using (var httpClient = new HttpClient()) {
var json = await httpClient.GetStringAsync(SourceURI);
return json;
}
}
से काम नहीं होता और किसी भी परिणाम ठीक से वापस नहीं जा रहा है। मुझे यकीन नहीं है कि परिणाम के इंतजार को मजबूर करने के लिए मुझे एक बयान क्यों खो रहा है? मैं एक स्ट्रिंग वापस करने के लिए पुनर्प्राप्ति होलीडेडेट्सफ्रॉमसोर्स() विधि चाहता हूं।
नीचे ठीक काम करता है लेकिन यह तुल्यकालिक है और मुझे विश्वास है कि इसे बेहतर किया जा सकता है? ध्यान दें कि नीचे सिंक्रोनस है जिसमें मैं असीमित में बदलना चाहता हूं लेकिन किसी कारण से मेरे सिर को लपेटने में असमर्थ हूं।
public string RetrieveHolidayDatesFromSource() {
var result = this.RetrieveHolidayDatesFromSourceAsync();
/** Do Stuff **/
var returnedResult = this.TransformResults(result); /** This is where Result is actually used**/
return returnedResult;
}
private string RetrieveHolidayDatesFromSourceAsync() {
using (var httpClient = new HttpClient()) {
var json = httpClient.GetStringAsync(SourceURI);
return json.Result;
}
}
क्या मुझे कुछ याद आ रही है?
नोट: किसी कारण से, जब मैं Async विधि ऊपर ब्रेकपाइंट, जब यह लाइन के लिए हो जाता है "var json = httpClient.GetStringAsync (SourceURI) का इंतजार है" के लिए यह सिर्फ ब्रेकप्वाइंट से बाहर चला जाता है और मैं वापस में नहीं जा सकते प्रक्रिया।
क्या 'सार्वजनिक कार्य पुनर्प्राप्ति होलीडेडेट्सफ्रॉमसोर्सएसिंक() 'एक' प्रतीक्षा 'गायब है? –
@ निकवेवर: नहीं। यह 'async' नहीं है, इसलिए यह' प्रतीक्षा 'का उपयोग नहीं कर सकता है। –
मैं देखता हूं। मैं सोच रहा था क्योंकि विधि का नाम अंत में "Async" कहता है। यह async पर क्यों सेट नहीं है? –