如何在WinRT中同步下载数据?

时间:2014-10-25 09:03:06

标签: c# multithreading windows-runtime

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

1 个答案:

答案 0 :(得分:1)

您可以将模型用于实现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));
    }