Теперь, когда изменяются определенные байты, мне нужно чтобы отреагировать на это изменение, обновив некоторые другие байты в той же коллекции. Однако ObservableCollection не позволяет вносить изменения в коллекцию во время события CollectionChanged с помощью diposable, возвращаемого BlockReentrancy(), в его методе OnCollectionChanged() и вызов CheckReentrancy() в качестве защитного оператора в его модифицирующих методах (
Код: Выделить всё
Add()Код: Выделить всё
protected virtual void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
{
if (CollectionChanged != null)
{
using (BlockReentrancy())
{
CollectionChanged(this, e);
}
}
}
Код: Выделить всё
public class UnsafeObservableCollection : ObservableCollection
{
public UnsafeObservableCollection() { }
public UnsafeObservableCollection(IEnumerable collection) : base(collection) { }
public UnsafeObservableCollection(List list) : base(list) { }
public override event NotifyCollectionChangedEventHandler? CollectionChanged;
// ignoring reentrancy, allowing for collection updates within a collection changed event
protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e) => CollectionChanged?.Invoke(this, e);
}
Собираюсь ли я сделать что-то глупое, или это разумно, учитывая мой конкретный контекст?
Собираюсь ли я сделать что-то глупое, или это разумно, учитывая мой конкретный контекст?
Собираюсь ли я сделать что-то глупое, или это разумно, учитывая мой конкретный контекст?
em>
Я надеюсь, что кто-нибудь поможет мне лучше понять и/или скажет мне, не упускаю ли я сценарий, при котором это может сломаться. С уважением
Подробнее здесь: https://stackoverflow.com/questions/783 ... llectionts