Не могу добавить элементы в ObservableCollection внутри обратного вызова FirestoreChangeListenerC#

Место общения программистов C#
Ответить
Anonymous
 Не могу добавить элементы в ObservableCollection внутри обратного вызова FirestoreChangeListener

Сообщение Anonymous »

Код: Выделить всё

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();
Сначала я сделал это с ObservableCollection по умолчанию, но получил эту ошибку:

System.NotSupportedException: Этот тип CollectionView не поддерживает изменения в SourceCollection из потока, отличного от потока Dispatcher.

Затем я попробовал AsyncObservableCollection. Я не получаю сообщение об ошибке, но на этот раз элементы не добавляются. А в комментариях AsyncObservableCollection написано:
"Вы не можете изменить коллекцию во время обратного вызова".
Как я могу изменить Observable сбор во время обратного вызова? Есть ли какая-нибудь специальная ObservableCollection, с помощью которой я могу это сделать?
Я пробовал также разные коллекции Observable из этой:
ObservableCollections
Ни один из них не помог

Подробнее здесь: https://stackoverflow.com/questions/791 ... r-callback
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»