Код: Выделить всё
public static AsyncObservableCollection MovieComments = new AsyncObservableCollection();
public static async Task ListenForCommentChanges(int showId, ShowType showType)
{
var commentList = showType == ShowType.Movie ? MovieComments : TvShowComments;
var query = database.Collection(showType.ToString() + showId);
FirestoreChangeListener listener = query.Listen(snapshot =>
{
foreach (var documentSnapshot in snapshot.Changes)
{
var x = documentSnapshot.Document;
Dictionary comments = x.ToDictionary();
Comment com = new Comment();
com.Id = comments["Id"].ToString();
com.Email = comments["Email"].ToString();
com.DisplayName = comments["DisplayName"].ToString();
com.Text = comments["Text"].ToString();
if (documentSnapshot.ChangeType == DocumentChange.Type.Added)
{
if (com.ReplyToCommentId == "-1")
{
commentList.Add(com);
}
}
}
});
lis = listener;
}
Код: Выделить всё
FirestoreManager.ListenForCommentChanges(500, ShowType.Movie).Wait();
System.NotSupportedException: Этот тип CollectionView не поддерживает изменения в SourceCollection из потока, отличного от потока Dispatcher.
Затем я попробовал AsyncObservableCollection. Я не получаю сообщение об ошибке, но на этот раз элементы не добавляются. А в комментариях AsyncObservableCollection написано:
"Вы не можете изменить коллекцию во время обратного вызова".
Как я могу изменить Observable сбор во время обратного вызова? Есть ли какая-нибудь специальная ObservableCollection, с помощью которой я могу это сделать?
Я пробовал также разные коллекции Observable из этой:
ObservableCollections
Ни один из них не помог
Подробнее здесь: https://stackoverflow.com/questions/791 ... r-callback
Мобильная версия