मैं अभी भी async के बारे में बिल्कुल स्पष्ट नहीं हूं और .NET 4.5 में प्रतीक्षा कर रहा हूं। अब तक, मुझे लगता है कि मैं समझता हूं कि प्रतीक्षा करें:एपीकंट्रोलर पोस्ट में Async और Await
- फ़ंक्शन (दाईं ओर) को एक अलग थ्रेड पर रखता है।
- निष्पादन को वर्तमान फ़ंक्शन के कॉलर
- पर वापस रखता है लेकिन प्रतीक्षा (async) फ़ंक्शन समाप्त होने तक शेष फ़ंक्शन का कोड "बंधक" शेष रहता है।
अगर मुझे कुछ गलत समझ रहा है तो कृपया मुझे सही करें। तो, अगर ऊपर से सच है, मैं एक ApiController के पोस्ट समारोह के साथ अटक कि मैं async चाहते हूँ:
[HttpPost]
public async Task<HttpResponseMessage> Post([FromBody]MyObject obj)
{
myDataContext.MyObjects.InsertOnSubmit(obj);
myDataContext.SubmitChanges();
await SomeReallyLongRunningTaskAsync();
// obj would now have the new Id, which I'm really after.
return Request.CreateResponse(HttpStatusCode.Created, obj);
}
तो अगर मैं इस को सही ढंग से समझ रहा हूँ, पोस्ट निष्पादन समाप्त करने और वापस जाने के जो कोई भी myApiController.Post(obj)
कहा जाता है करने के लिए नियंत्रण होगा। लेकिन return Request.CreateResponse(HttpStatusCode.Created, obj);
"बंधक" होने के बाद से मेरे पास HttpResponseMessage
ऑब्जेक्ट नहीं है।
इस उपरोक्त सरल उदाहरण में, क्या कॉल तुरंत ग्राहक (यानी क्लाइंट जेएस वेबसाइट या मोबाइल ऐप) पर वापस आ जाएगा? यदि हां, तो क्या यह 201, 400, 500 (बेहतर नहीं) होगा, अन्य?