2015-07-22 10 views
6

मेरे पास एक ही ऑब्जेक्ट प्रकार लौटने वाले कई कार्य हैं जिन्हें मैं Task.WhenAll(new[]{t1,t2,t3}); का उपयोग करके कॉल करना चाहता हूं और परिणाम पढ़ सकता हूं।कार्य से परिणाम प्राप्त करें। जब सभी

जब मैं

Task<List<string>> all = await Task.WhenAll(new Task[] { t, t2 }).ConfigureAwait(false); 

का उपयोग कर की कोशिश मैं एक संकलक त्रुटि

परोक्ष 'System.Threading.Tasks.Task<System.Collections.Generic.List<string>>

दोनों कार्यों को समान विधि बुला रहे हैं करने के लिए प्रकार 'शून्य' कनवर्ट नहीं कर सकता मिल इस ।

private Task<List<string>> GetFiles(string path) 
{ 
    files = new List<string>(); 
    return Task.Run(() => 
    { 
     //remove for brevity 
     return files; 
    }); 
} 
+0

आप [WhenAll] के लिए MSDN नमूना के कौन से भाग कृपया स्पष्ट कर सकते हैं (https://msdn.microsoft.com/en-us/library/hh194766%28v=vs.110%29.aspx) नहीं है स्पष्ट? जवाब देने के लिए सवाल आसान बना देगा। –

+0

वास्तव में कोई भी लेख स्पष्ट नहीं है। यह स्पष्ट नहीं है कि यह शून्य कहां से आ रहा है। – user3373870

+0

मुझे लगता है - जैसा कि माइक हिक्सन ने बताया कि आपके पास 'कार्य ' के बजाय 'कार्य' (कार्य जो मूल्य नहीं लौटाता है) की सूची है - इसलिए 'शून्य' में परिणाम का इंतजार है। आम तौर पर आप इस तरह के मुद्दों से बचने के लिए शॉर्टकट सरणी सिंटैक्स का उपयोग करके प्रकार निर्दिष्ट नहीं करते हैं - 'पूछें। जब सभी (नया [] {टी, टी 2}) ... '। या MSDN नमूने में दिखाए गए कार्यों की सही टाइप की गई सूची/सरणी का उपयोग करें - 'var task = new list >(); '। –

उत्तर

5

ऐसा लगता है कि आप WaitAll() के अधिभार का उपयोग कर रहे हैं जो मान वापस नहीं करता है। यदि आप निम्नलिखित परिवर्तन करते हैं, तो इसे काम करना चाहिए।

List<string>[] all = await Task.WhenAll(new Task<List<string>>[] { t, t2 }) 
           .ConfigureAwait(false); 
+3

या सिर्फ 'सूची [] सभी = कार्य का इंतजार करें। जब सभी (टी, टी 2)। कॉन्फिगर करेंएवेट (झूठा); ' –

2

WhenAll की वापसी प्रकार एक कार्य जिसका परिणाम प्रकार व्यक्तिगत कार्यों 'परिणाम प्रकार की एक सरणी है, आपके मामले में Task<List<string>[]>

जब एक इंतजार अभिव्यक्ति में इस्तेमाल किया, काम "unwrapped हो जाएगा "इसके परिणाम प्रकार में, जिसका अर्थ है कि आपके" सभी "चर का प्रकार List<string>[]

संबंधित मुद्दे