2015-11-18 4 views
7

मैं एक विंडोज 10 यूडब्ल्यूपी ऐप बना रहा हूं, जिसमें पृष्ठभूमिडाउनलोडर शामिल है, यह केवल डेस्कटॉप में काम करता है, न कि फोन पर।BackgroundDownloader विंडोज 10 मोबाइल यूडब्ल्यूपी के लिए काम नहीं कर रहा है?

कोड:

var dl = new BackgroundDownloader(); 
    dl.CostPolicy = BackgroundTransferCostPolicy.Always; 
    file = await localSoundsFolder.CreateFileAsync(name, CreationCollisionOption.ReplaceExisting); 
    if (file != null) 
    { 
     var d = dl.CreateDownload(new Uri(uriToDownloadFrom,UriKind.RelativeOrAbsolute), file); 
     d.Priority = BackgroundTransferPriority.High; 

     var progressCallback = new Progress<DownloadOperation>(x => DownloadProgress(x, sc)); 
     try 
     { 
      await d.StartAsync().AsTask(cancellationToken.Token,progressCallback); 
      //After this line it doesn't progress! 
      CancellationTokenSource token = Utility.cancellationList[sc]; 
      if (token != null) 
      { 
       token.Cancel(); 
       Utility.cancellationList.Remove(sc); 
       Debug.WriteLine("The sc has been removed from the download list"); 
      } 
     } 
     catch 
     { 
      return; 
     } 
    } 


private static void DownloadProgress(DownloadOperation download,SoundClass sc) 
{ 
    Debug.WriteLine("Callback"); 
    var value = download.Progress.BytesReceived * 100/download.Progress.TotalBytesToReceive; 
    Debug.WriteLine("The bytesReceived is {0} and total bytes is {1}", download.Progress.BytesReceived.ToString(), download.Progress.TotalBytesToReceive.ToString()); 
    new System.Threading.ManualResetEvent(false).WaitOne(10); 
    sc.downloadProgress = value; 
    if (download.Progress.Status == BackgroundTransferStatus.Completed || value >= 100) 
    { 
     Debug.WriteLine("DONE donwloading the file {0}", download.ResultFile.Name); 
     Debug.WriteLine("The file name happened to be to be added was " + download.ResultFile.Name); 
     string fileName = download.ResultFile.Name; 
    } 
} 

लाइन await d.StartAsync().AsTask(cancellationToken.Token,progressCallback); कार्यक्रम आगे बढ़ना नहीं है के बाद। और कोई त्रुटि भी नहीं है। यह केवल फोन पर काम नहीं कर रहा है पूरी तरह से डेस्कटॉप पर काम करता है! मैं क्या खो रहा हूँ?

+0

यह सिर्फ एक टिप है लेकिन पिछले समाप्ति के बाद एप्लिकेशन स्टार्टअप पर आपको सभी मौजूदा डाउनलोडऑपरेशंस का आकलन करना चाहिए और उन्हें वर्तमान सत्र में दोबारा जोड़ना चाहिए। BackgroundDownloader एक ही यूआरआई के concurent डाउनलोड का समर्थन नहीं करता है, इसलिए यदि डाउनलोडऑपरेशन कहीं भी लटक रहा है तो यह समस्या का कारण बन सकता है। Https://msdn.microsoft.com/library/windows/apps/br207126 – Liero

+0

टिप लियोरो के लिए धन्यवाद, यह कोशिश की लेकिन यह अभी भी काम नहीं कर रहा है। – AbsoluteSith

+0

मैंने मोबाइल एमुलेटर 10.0.10240 में 'साउंड क्लास' के बिना अपने कोड का परीक्षण किया क्योंकि मुझे नहीं पता कि यह क्या है और आपका कोड अच्छी तरह से काम करता है। क्या आप एमुलेटर में या वास्तविक डिवाइस में परीक्षण कर रहे हैं? यहां माइक्रोसॉफ्ट से एक [पृष्ठभूमि हस्तांतरण नमूना] (https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/BackgroundTransfer) है, आप इसे देखने के लिए अपने कोड में उपयोग किए गए यूआरआई के साथ परीक्षण कर सकते हैं अगर यह काम करता है। –

उत्तर

0

पृष्ठभूमिडाउनलोडर और मुझे लगता है कि विंडोज़ यूडब्लूपी में सभी पृष्ठभूमि टास्क उनके साथ काम करना मुश्किल है। आपको पहले विंडोज रनटाइम घटक के रूप में अपने वर्तमान समाधान में एक नया समाधान बनाना होगा। उसके बाद आपको इसे पैकेज.एपएक्समैनिफेस्ट के माध्यम से लिंक करना होगा। उह, रनटाइम घटक को अपने मुख्य प्रोजेक्ट के संदर्भ के रूप में नहीं भूलना। यदि आप इन चीजों को उम्मीद करते हैं तो यह काम होना चाहिए। लेकिन सुनिश्चित करें कि आपके पास RuntimeComponent है और आपने इसे अपनी प्रोजेक्ट

+0

मुझे अत्यधिक संदेह है कि हमें पृष्ठभूमि डाउनलोड करने के लिए पृष्ठभूमि टास्क बनाने की आवश्यकता है। तो यह वास्तव में एक समाधान नहीं है। – AbsoluteSith

0

से लिंक किया है, हम बिल्कुल एक ही समस्या के साथ संघर्ष कर रहे थे, लेकिन एक सार्वभौमिक विंडोज 10 ऐप पर - फ़ोन नहीं। हमारे मामले में अपराधी विंडोज 10 का बैटरी सेवर मोड था। विंडोज 10 डिवाइस पर, बैटरी आइकन टैप करें। यह बैटरी और स्क्रीन चमक फ्लाईआउट लाएगा। बैटरी मोड अक्षम करें।

एमएसडीएन डाउनलोड नमूना ऐप सहित पृष्ठभूमि डाउनलोडर का उपयोग कर किसी भी ऐप के लिए प्रभाव समान था।

फिर से, यह मोबाइल पर नहीं था, लेकिन यह हमारे विंडोज 10 ऐप पर लगातार होता रहा। उम्मीद है कि यह फोन के समान है।

0

मेरे मामले में एक ही कोड यूएसबी केबल साथ लैपटॉप के लिए फोन कनेक्ट करके डीबग मोड में काम नहीं करता है, लेकिन इसे डाउनलोड करने और रिलीज मोड में ऐप्लिकेशन को इंस्टॉल करके काम करता है।

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