कहें कि मेरे पास Repository
कक्षा है जिसमें DbContext
है।आपको कार्य का इंतजार कब करना चाहिए?
public async Task<T> CreateAsync(T obj)
{
var o = _dbSet.Add(obj);
await _dbContext.SaveChangesAsync();
return o;
}
एक Service
वर्ग मैं इस विधि का उपयोग एक वस्तु बनाने के लिए: इस वर्ग में मैं एक विधि है
public async Task<MyObject> Create()
{
return await _repository.CreateAsync(new MyObject());
}
और अंत में मेरी एपीआई नियंत्रक MyObjectController
में मैं बहुत की तरह इस वस्तु लौट:
public async Task<IHttpActionResult> Get()
{
return Ok(await _service.Create());
}
मैं इन सभी async
और await
कीवर्ड के बारे में उलझन में हूं। मुझे पता है कि Task
प्रतीक्षा योग्य है। क्या इसका मतलब यह है कि मैं CreateAsync
से CreateAsync
या Create
में प्रतीक्षा किए बिना Task
वापस कर सकता हूं और फिर अंत में Get
में इसका इंतजार कर सकता हूं? क्या इसका मेरे आवेदन पर नकारात्मक प्रभाव पड़ता है कि मैं उदाहरण में ऐसा इंतजार कर रहा हूं?
यह ध्यान देने योग्य है कि का इंतजार कर के बिना एक टास्क लौटने के लिए नकारात्मक पक्ष यह है कि लायक है की जरूरत है मुझे जानते हैं प्रश्न में विधि एसिंक कॉलस्टैक में नहीं होगी यदि कोई अपवाद –
अच्छा बिंदु फेंक दिया गया है, लेकिन उसने कहा था कि वह अंततः इसे 'गेट' विधि में इंतजार कर रहा है, इसलिए अपवाद फेंक दिया जाएगा, लेकिन मैं इसे स्पष्ट रूप से इंगित करूंगा। –
अपवाद को निगल नहीं दिया जाएगा, लेकिन जिस पद्धति का इंतजार नहीं किया गया वह एसिंक कॉलस्टैक पर दिखाई नहीं देगा (जो चीजों को डीबग करना अधिक कठिन बना सकता है) –