Как контролировать глубину стека - PullRequest
0 голосов
/ 26 февраля 2019

Есть приложение C # WPF, использующее DevExpress.Поймать необработанное исключение, см. Ниже, где показаны элементы System и DevExpress, но ничего из любого из моих исходных модулей.Почти наверняка один из моих исходных модулей записывает в объект C #, который связан с DevExpress PropertyGridControl, который затем генерирует исключение, но какой PropertyGridControl?Есть ли способ увеличить или увеличить глубину трассировки стека, чтобы увидеть, где в моем источнике происходит запись в объект C #?

OnDispatcherUnhandledException occurred: Collection was modified after the enumerator was instantiated. 
at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.NodeKeyValueEnumerator.MoveNext()
at System.Linq.Enumerable.<CastIterator>d__94`1.MoveNext()
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at DevExpress.Mvvm.Native.LinqExtensions.ForEach[T](IEnumerable`1 source, Action`1 action)
at DevExpress.Xpf.PropertyGrid.Internal.DataController.InvalidateChildren(IEnumerable`1 handles)
at DevExpress.Xpf.PropertyGrid.Internal.DataController.UpdateHandles()
at DevExpress.Xpf.PropertyGrid.Internal.DataController.Update()
at DevExpress.Xpf.PropertyGrid.Internal.DataViewBase.<Update>b__98_0()
at DevExpress.Xpf.Core.Locker.DoLockedAction(Action action)
at DevExpress.Xpf.Core.Locker.<>c__DisplayClass12_0.<DoLockedActionIfNotLocked>b__0()
at DevExpress.Xpf.Core.Locker.DoIfNotLocked(Action action)
at DevExpress.Xpf.Core.Locker.DoLockedActionIfNotLocked(Action action)
at DevExpress.Xpf.PropertyGrid.Internal.DataViewBase.Update()
at DevExpress.Xpf.PropertyGrid.PropertyGridControl.UpdateData()
at DevExpress.Xpf.PropertyGrid.PropertyGridView.<OnLayoutUpdated>b__103_0(PropertyGridControl x)
at DevExpress.Mvvm.Native.MayBe.Do[TI](TI input, Action`1 action)
at DevExpress.Xpf.PropertyGrid.PropertyGridView.OnLayoutUpdated(Object sender, EventArgs e)
at System.Windows.ContextLayoutManager.fireLayoutUpdateEvent()
at System.Windows.ContextLayoutManager.UpdateLayout()
at System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)
at System.Windows.Media.MediaContext.InvokeOnRenderCallback.DoWork()
at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
at System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler) 

1 Ответ

0 голосов
/ 27 февраля 2019

К чести, DevExpress владеет до реализации, которая вызывает исключение, которое я наблюдаю.Их код обрабатывает привязку DataContext асинхронно, поэтому, очевидно, что при асинхронной обработке одного обновления привязки, другое обновление привязки, происходящее одновременно, может привести к kaboom.Скоро выйдет новый релиз ...

...