निम्न विधि को देखते हुए:का इंतजार AsyncMethod() बनाम इंतजार इंतजार Task.Factory.StartNew <TResult> (AsyncMethod)
public async void SomeEventHandler(EventArgs args) {
var myObject = await await Task.Factory.StartNew<Task<MyObject>>(DoSomethingAsync);
// do something with myObject
}
और:
public async void SomeEventHandler(EventArgs args) {
var myObject = await DoSomethingAsync();
// do something with myObject
}
public async Task<MyObject> DoSomethingAsync() {
// do some work
await OpenSomeFileAsync();
return new MyObject();
}
वहाँ के बीच एक अंतर है
मैं सोच रहा था कि DoSomethingAsync का "कुछ काम करें" भाग तुरंत एक नए कार्य में होगा पहला मामला, लेकिन ईमानदार होने के लिए मैं वास्तव में पूरी तरह से समझ नहीं पा रहा हूं कि कार्य, एसिंक और प्रतीक्षा कैसे काम कर रहे हैं, और मुझे पूरा यकीन है कि मैं अपने लिए चीजों को अधिक जटिल बना रहा हूं।
संपादित करें:
इस सवाल के बारे में इस मेट्रो उदाहरण को देख से आया था:
var unused = Task.Factory.StartNew(async() => { // some work... });
// unused is of type Task<TResult>
मैं करने के लिए कोशिश कर रहा था: MainPage.xaml.cs में विशेष रूप से http://code.msdn.microsoft.com/windowsapps/Sharing-Content-Target-App-e2689782
, वे इस राशि एक अज्ञात एसिंक फ़ंक्शन का उपयोग किए बिना इसे पुन: कार्य करें और मैंने सोचना शुरू किया, क्यों न केवल एक एसिंक विधि लिखना और इसे प्रतीक्षा करना, StartNew को कॉल करने और एसिंक फ़ंक्शन में सौंपने के बजाय?
आप इसे इस तरह से लिखने के लिए क्यों चाहिए? नए 'async' /' await' कीवर्ड का उपयोग करने का पूरा बिंदु इतना था कि आपको यह नहीं करना था। –
कोड ऑफ-हाथ –
के खराब उदाहरण टुकड़े की तरह लगता है मैंने अभी खुद को देखा, और ... वाह। हाँ, वह "आधिकारिक विंडोज एसडीके नमूना" कोड ** वास्तव में बुरा ** है! मुझे लगता है कि वे 'async' के बिंदु को पूरी तरह से याद करने में कामयाब रहे हैं! –