2013-02-21 29 views
6

मैं कुछ टाइल अपडेट शेड्यूल करने जा रहा हूं, और ध्यान दिया कि क्लेयर() विधि काम नहीं कर रही है। इसे 'सभी अद्यतनों को हटा देना चाहिए और ऐप के मैनिफेस्ट में घोषित की गई अपनी डिफ़ॉल्ट सामग्री को वापस लेना चाहिए' (MSDN)TileUpdater.Clear() सभी अपडेट क्यों नहीं हटाता है?

संपादित करें: चेकी एमएस! उस विधि के लिए प्रलेखन के तहत यह कहता है: 'नोट: यह विधि समय-समय पर अद्यतनों को रोक नहीं देती है'

कहें कि मैं 3000 अपडेट अपडेट करता हूं (नहीं कि मैं बीटीडब्ल्यू कर रहा हूं!), कॉलिंग को साफ़ करने के बाद अभी भी 3000 है।

enter image description here

वही सवाल यहाँ कहा गया था: TileUpdater.Clear() not freeing up notifications quota, और केवल सिफारिश प्रत्येक और अद्यतन में से एक मैन्युअल रूप से दूर करने के लिए किया गया था।

मैंने यह जांचने का फैसला किया कि स्टॉपवॉच क्लास का उपयोग करके कितना समय लगेगा, और इसमें 40 सेकंड में निर्धारित समय की अधिकतम राशि के साथ 11 सेकंड, 18 सेकेंड का समय लगेगा, ताकि समाधान थोड़ा पागल हो।

enter image description here

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

तो, क्या आप जानते हैं क्यों .Clear() काम नहीं करता है, और सबसे अच्छा विकल्प क्या होगा?

साफ़ केवल टाइल में परिवर्तन को साफ करता है,

private void Button_Click_1(object sender, RoutedEventArgs e) 
    { 

     var updater = TileUpdateManager.CreateTileUpdaterForApplication(); 
     updater.Clear(); 
     var test = updater.GetScheduledTileNotifications(); 

     var stopWatch = new Stopwatch(); 
     stopWatch.Start(); 
     foreach (var update in test) 
     { 
      updater.RemoveFromSchedule(update); 
     } 
     stopWatch.Stop(); 
     var time = stopWatch.Elapsed; 

     notify.Text = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", 
      time.Hours, time.Minutes, time.Seconds, 
      time.Milliseconds/10); 

     for (int i = 0; i < 4096; i++) 
     { 
      var wide = TileContentFactory.CreateTileWideText09(); 
      var square = TileContentFactory.CreateTileSquareText04(); 
      wide.TextHeading.Text = "The heading"; 

      wide.TextBodyWrap.Text = "The body text for notification: " + i; 
      square.TextBodyWrap.Text = "The body text for notification: " + i; 

      wide.SquareContent = square; 

      var tileNotification = new ScheduledTileNotification(wide.GetXml(), DateTime.Now.AddMinutes(i + 1)); 
      updater.AddToSchedule(tileNotification); 
     } 
    } 

उत्तर

1

आइरिस:

यहाँ अगर आप इस एक कोशिश देना चाहता हूँ कोड है।

http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.notifications.tileupdater.clear.aspx

StopPeriodicUpdate केवल अनुसूचित अपडेट रद्द लेकिन उन्हें हटाया नहीं जाता। http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.notifications.tileupdater.stopperiodicupdate.aspx

नीचे की रेखा है - कार्यक्षमता नहीं है। दस्तावेज़ीकरण स्पष्ट नहीं है/.NET जैसे साफ़ साफ़ वास्तव में स्पष्ट होगा और सामग्री रीसेट। दुखद स्थिति की बात है, लेकिन हमारे पास

+0

मुझे StopPeriodicUpdates के बारे में पता है, लेकिन मुझे 'नोट यह विधि आवधिक अद्यतनों को रोक नहीं देती है' से चूक गई। वास्तव में खराब नामकरण, साफ़() SetToDefaultTile() होना चाहिए। कैसा कष्टकर। तो लूप यह तब है :(आह ठीक है, यहाँ और ट्विटर साथी पर मदद के लिए धन्यवाद :) –

+1

कोई चिंता नहीं .. WinRT के साथ हम बुरे नामकरण के COM युग में वापस आ गए हैं :) उन सभी अद्भुत .NET सम्मेलन गायब हो गए प्रतीत होते हैं .. एक अच्छी बात .. कम से कम आपको TileUpdateFactory.CoCreateTileUpdaterForAppEx को कॉल करने की आवश्यकता नहीं है –