数据绑定在异步线程中抛出异常

时间:2017-02-06 06:45:19

标签: c# uwp xamarin.forms

我目前正在编写一个简单的Xamarin.Forms聊天应用程序来学习。

此应用程序有一个已绑定到ObservableCollection的ListView。通过右键,每当我向ObservableCollection添加一个对象时,它都应该显示在列表中。

我有一个异步线程,它每秒轮询服务器以获取消息,然后将该消息添加到ObservableCollection中,然后显示在ListView中。

这在Android上运行良好,但由于某些奇怪的原因似乎无法在UWP上运行。

我在控制台中遇到的异常是 ObservableCollection<MessageListItem> messageList = new ObservableCollection<MessageListItem>(); public MainPage() { InitializeComponent(); //Bind the ListView to the ObservableCollection MessageListView.ItemsSource = messageList; //Start listening to messages var messagesTask = connection.GetMessagesAsync(messageList); }

MainPage.xaml.cs中:

    public async Task GetMessagesAsync(ObservableCollection<MessageListItem> collection)
    {
        string watermark = null;

        while(true)
        {
            Debug.WriteLine("Reading message every 1 second");

            var activitySet = await Client.Conversations.GetActivitiesAsync(MainConversation.ConversationId, watermark);
            watermark = activitySet?.Watermark;

            foreach(Activity activity in activitySet.Activities)
            {
                if (activity.From.Name == "MarsBot")
                {
                    //Add object to binded collection
                    collection.Add(new MessageListItem(activity.Text, activity.From.Name));
                }             
            }

            await Task.Delay(1000);
        }
    }

GetMessagesAsync():

Ctrl

我在这里做错了吗?

0 个答案:

没有答案