2015-07-16 4 views
6

मैं 10 सार्वभौमिक अनुप्रयोग एक खिड़कियों पर इस कोड का उपयोग एक फाइल डाउनलोड करने के लिए कोशिश कर रहा हूँ शुरू नहीं DownloadOperation:खिड़कियों 10 क्षुधा

await downloadOperation.StartAsync().AsTask(token, progressCallback); 

यह पीसी पर काम कर रहा है, लेकिन मोबाइल कभी कभी पर डाउनलोड शुरू नहीं करता है है और नहीं जब तक मैं मोबाइल को पुनरारंभ नहीं करता तब तक अपवाद भी देता हूं। क्या यह सिस्टम में एक बग है या मुझे कुछ याद आ रहा है?

संपादित करें 1:

कार्य की स्थिति "एक्टिवेशन की प्रतीक्षा" है इसलिए वह एक अपवाद फेंक नहीं है। यह सिर्फ प्रतीक्षा कर रहा है और जब तक मैं फोन को पुनरारंभ नहीं करता तब तक शुरू नहीं होता मैं हमेशा एक ही यूआरएल के साथ कोशिश कर रहा हूं और मुझे पीसी पर यह समस्या नहीं है। यह केवल फोन के बारे में है। कार्य के गुण निम्न हैं:

+0

* * आम तौर पर नहीं, कार्य से अपवाद सामान्य विधि में फेंक दिया नहीं कर रहे हैं "यह प्रणाली में एक बग है"। एक अपवाद फेंक दिया गया है या नहीं, यह जानने के लिए आपको लौटा कार्य में निहित विधियों का उपयोग करने की आवश्यकता है। Https://msdn.microsoft.com/en-us/library/system.threading.tasks.task.isfaulted(v=vs.110).aspx और https://msdn.microsoft.com/en-us/ देखें लाइब्रेरी/system.threading.tasks.task.exception (v = vs.110) .aspx –

+0

आप नमूना आज़मा सकते हैं: https://github.com/Microsoft/Windows-universal-samples/tree/master/backgroundtransfer – kiewic

+0

@ RonBeyer कार्य की स्थिति "सक्रियण की प्रतीक्षा" है, इसलिए यह अपवाद नहीं फेंक रहा है। यह बस इंतज़ार कर रहा है और जब तक मैं फोन को पुनरारंभ नहीं करता तब तक शुरू नहीं होता मैं हमेशा एक ही यूआरएल के साथ कोशिश कर रहा हूं और मुझे पीसी पर यह समस्या नहीं है। यह केवल फोन के बारे में है। –

उत्तर

3

मुझे अंत में समस्या मिली। जब मैं एक डाउनलोड ऑपरेशन शुरू करता हूं और ऑपरेशन को रद्द किए बिना एप्लिकेशन बंद करता हूं तो BackgroundDownloader अगले एप्लिकेशन प्रारंभ के लिए ऑपरेशन रखता है। जब डाउनलोड ऑपरेशन की संख्या अधिकतम अनुमत संचालन तक पहुंच जाती है (मुझे लगता है कि 5) अगले ऑपरेशन प्रतीक्षा ऑपरेशन() तक पिछले ऑपरेशन खत्म होने तक होंगे। तो मैं जब आवेदन इस तरह शुरू होता है सभी अपूर्ण संचालन बंद करना पड़ा:

Task.Run(async() => 
     { 
      var downloads = await BackgroundDownloader.GetCurrentDownloadsAsync(); 
      foreach (var download in downloads) 
      { 
       CancellationTokenSource cts = new CancellationTokenSource(); 
       download.AttachAsync().AsTask(cts.Token); 
       cts.Cancel(); 
      } 
      var localFolder = ApplicationData.Current.LocalFolder; 
      var files = await localFolder.GetFilesAsync(); 
      files = files.Where(x => x.Name.EndsWith("_")).ToList(); 
      foreach (StorageFile file in files) 
      { 
       await file.DeleteAsync(StorageDeleteOption.PermanentDelete); 
      } 
     }); 
+0

यह "डाउनलोड करने के लिए पर्याप्त नहीं होना चाहिए" एटैचएसिंक()। रद्द करें() "रद्द करने के बजाय रद्द करने के बजाय? – Amenti

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