繁体   English   中英

通过后台任务获取字符串Windows Phone 8.1

[英]Get String Windows Phone 8.1 through Background Task

我终于有了一个后台任务,可以将Toast通知发送到前例。 不幸的是,我遇到了一个问题。 我的后台任务需要检查rss feed是否有更新,但是当我运行时

HttpClient hc = new HttpClient();
string result = await hc.GetString("http://url.com");

触发GetString方法后没有任何反应,不会返回,也不会跳转到下一行。 我也尝试过BackgroundDownload ,它也应该像httpclient一样停止,何时应该下载?

StorageFolder folder = ApplicationData.Current.TemporaryFolder;
StorageFile file = await folder.CreateFileAsync("feed.txt");
BackgroundDownloader test = new BackgroundDownloader();
DownloadOperation operation = test.CreateDownload(new Uri("https://url.com"), file);
operation.Priority = BackgroundTransferPriority.Default;
await operation.StartAsync();

我到处都在寻找答案,但是似乎找不到一个……所以我如何从站点获取字符串,就像使用hc.GetString("");

这是我的代码:

public async void Run(IBackgroundTaskInstance taskInstance)
{
    var deferral = taskInstance.GetDeferral();
    int lastSeenNews = Convert.ToInt32(Settings.GetValue("lastNews"));
    int lastNews = 0;
    HttpClient hc = new HttpClient();
    var rss = await hc.GetStringAsync("https://url.com");

    List<RSSItem> items = new List<RSSItem>();
    lastNews = items[0].id;
    if (lastSeenNews < lastNews)
    {
        int unreadNotifications = 0;
        List<RSSItem> unreadStatuses = items.Where(x => x.id > lastSeenNews).ToList();
        unreadNotifications = unreadStatuses.Count;
    }
    ToastTemplateType toastTemplate = ToastTemplateType.ToastText01;
    XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate);

    XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text");
    toastTextElements[0].AppendChild(toastXml.CreateTextNode(Settings.GetValue("lastNews")));

    ToastNotification toast = new ToastNotification(toastXml);
    ToastNotificationManager.CreateToastNotifier().Show(toast);
    deferral.Complete();
}

我的猜测是,由于hc.GetString()的异步调用,后台任务正在终止

您可以通过请求BackgroundTaskDeferral来解决此问题- 有关代码示例,请参阅本快速入门中有关后台任务的第4步。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM