为什么TileUpdater.Clear()没有删除所有更新?

时间:2013-02-21 13:39:49

标签: c# windows-runtime

我即将安排相当多的磁贴更新,并注意到.Clear()方法似乎不起作用。它应该'删除所有更新并恢复为应用程序清单'(MSDN)

中声明的默认内容 编辑:厚颜无耻的MS!在该方法的文档中,它说:'注意:此方法不会停止定期更新'

假设我安排了3000次更新(不是我将要做的事,顺便说一下!),在打电话之后,计数仍然是3000.

enter image description here

此处提出了同样的问题:TileUpdater.Clear() not freeing up notifications quota,唯一的建议是手动删除每个更新和其中一个更新。

我决定测试使用StopWatch类需要多长时间,并且花费了11秒18秒,最大预定更新量为4096秒,这样解决方案似乎有点疯狂。 / p>

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 个答案:

答案 0 :(得分: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就像Clear明确表示清除而不是重置内容。悲惨的状况,但这就是我们所拥有的一切