मेरे पास एक async
तरीका है जो कोई डेटा नहीं लौटाता है:
public async Task MyAsyncMethod()
{
// do some stuff async, don't return any data
}
मैं इसे दूसरी विधि से कॉल कर रहा हूं जो कुछ डेटा लौटाता है:
public string GetStringData()
{
MyAsyncMethod(); // this generates a warning and swallows exceptions
return "hello world";
}
कॉलिंग MyAsyncMethod()
का इंतजार कर रहा है यह एक "का कारण बनता है बिना क्योंकि इस कॉल की प्रतीक्षा नहीं है, वर्तमान विधि कॉल पूर्ण होने से पहले चलाने के लिए जारी है दृश्य स्टूडियो में चेतावनी"। उस चेतावनी के पेज पर यह लिखा है:
आपको चेतावनी को दबाने पर विचार करना चाहिए, यदि आप सुनिश्चित हैं कि आप अतुल्यकालिक कॉल को पूरा करने के लिए इंतजार नहीं करना चाहते हैं और कहा जाता है कि कोई भी अपवाद नहीं उठाया जाएगा ।
मुझे यकीन है कि मैं कॉल के पूरा होने का इंतजार नहीं करना चाहता; मुझे या करने की आवश्यकता नहीं है। लेकिन कॉल अपवादों को बढ़ा सकता है।
मैं इस समस्या में कुछ बार ठोकर खा चुका हूँ और मुझे यकीन है कि यह एक सामान्य समस्या है जिसका एक सामान्य समाधान होना चाहिए।
मैं परिणाम की प्रतीक्षा किए बिना सुरक्षित रूप से एक async विधि कैसे कहूं?
अपडेट करें:
लोगों को यह सुझाव देने के लिए कि मुझे बस परिणाम का इंतजार है, यह कोड है जो हमारी वेब सेवा (ASP.NET वेब एपीआई) पर एक वेब अनुरोध का जवाब दे रहा है। UI संदर्भ में प्रतीक्षा करने से UI थ्रेड मुक्त रहता है, लेकिन वेब अनुरोध कॉल का इंतजार अनुरोध का जवाब देने से पहले कार्य समाप्त होने तक प्रतीक्षा करेगा, जिससे बिना किसी कारण के प्रतिक्रिया समय बढ़ेगा।
MyAsyncMethod().Wait()