如何在WinRT中同步下载数据

本文关键字:同步 下载 数据 WinRT | 更新日期: 2023-09-27 18:27:44

我正在为WinRT迁移应用程序。在旧的应用程序中使用了WebClient。通过这个WebClient,它下载数据a,然后将它们绑定到ui。在新的应用程序中,我想做同样的事情。但我找到的唯一方法是使用HttpClient,这是必须等待的。这意味着我允许下载文件,在下载完成之前,程序试图绑定数据,程序崩溃。是否有选项,如何同步下载流/文件?我坚持等待的操作就像同步操作,程序/线程会"暂停"直到它完成,但显然不是。

如何在WinRT中同步下载数据

您可以为实现INotifyPropertyChanged 的数据使用模型

    private List<string> _myList;
    public List<string> MyList
    {
        get { return _myList; }
        set
        {
            if (Equals(value, _myList)) return;
            _myList = value;
            OnPropertyChanged();
        }
    }

当你用异步下载数据时,你需要这样做:

    var result = await ...//download and parse data
    MyList = result.Items;

在XAML中,您需要绑定到MyList。这将触发绑定进行更新。

INotifyPropertyChanged实现如下所示:

    public event PropertyChangedEventHandler PropertyChanged;
    [NotifyPropertyChangedInvocator]
    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    }