This is a migrated thread and some comments may be shown as answers.

Exception on CollectionChanged

1 Answer 105 Views
GridView
This is a migrated thread and some comments may be shown as answers.
eliraz
Top achievements
Rank 1
eliraz asked on 16 Jan 2013, 01:47 PM
I'm trying to use my own safe observable collection as the Item source for the grid.
What I've done for testing purposes is this:
1. Open a new thread 
2. Create a lot of data in that thread
3. Clear the item source that's already binded to the radGridView (the collection being cleared is done in the thread, the call to CollectionChanged is invoked to the dispatcher)
4. add all of the items in the disconnected list to the ItemSource, every addition makes a separate invocation to the dispatcher to call CollectionChanged.

At a random point during 4 I'll get the exception, could be on the first addition could be on 200th (let's say I have 1000 items in the collection), what I've found by logging everything that happens in my observable collection is that the random point is the one after the grid calls GetEnumerator, I've made sure that the enumeration has ended before I touch the collection by using a reader writer lock and the addition only happens after the enumerator is disposed.

    mscorlib.dll!System.ThrowHelper.ThrowArgumentOutOfRangeException(System.ExceptionArgument argument, System.ExceptionResource resource) + 0x41 bytes
    mscorlib.dll!System.Collections.Generic.List<object>.Insert(int index, object item) + 0x82 bytes   
    Telerik.Windows.Data.dll!Telerik.Windows.Data.KeyedCollection.Insert(int index, object value) Line 181  C#
    Telerik.Windows.Data.dll!Telerik.Windows.Data.QueryableCollectionView.ProcessSynchronousCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs args) Line 1479   C#
    Telerik.Windows.Data.dll!Telerik.Windows.Data.QueryableCollectionView.ProcessCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs args) Line 1342  C#
    Telerik.Windows.Data.dll!Telerik.Windows.Data.QueryableCollectionView.OnSourceCollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs args) Line 1819  C#
    Telerik.Windows.Data.dll!Telerik.Windows.Data.QueryableCollectionView.Telerik.Windows.Data.IWeakEventListener<System.Collections.Specialized.NotifyCollectionChangedEventArgs>.ReceiveWeakEvent(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs args) Line 1798  C#
    Telerik.Windows.Data.dll!Telerik.Windows.Data.WeakEvent.WeakListener<System.Collections.Specialized.NotifyCollectionChangedEventArgs>.Handler(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs args) Line 33 + 0x42 bytes C#
>   TestInfragisticsGrid.exe!TelerikTest3.SafeObservable<TelerikTest3.Employee>.DoAdd(TelerikTest3.Employee item) Line 77 + 0x34 bytes  C#
    TestInfragisticsGrid.exe!TelerikTest3.SafeObservable<TelerikTest3.Employee>.Add.AnonymousMethod__2() Line 67 + 0x12 bytes   C#
    WindowsBase.dll!System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate callback, object args, int numArgs) + 0xba bytes
    WindowsBase.dll!MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(object source, System.Delegate method, object args, int numArgs, System.Delegate catchHandler) + 0x42 bytes   
    WindowsBase.dll!System.Windows.Threading.DispatcherOperation.InvokeImpl() + 0x8d bytes 
    WindowsBase.dll!System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(object state) + 0x38 bytes
    mscorlib.dll!System.Threading.ExecutionContext.runTryCode(object userData) + 0x51 bytes
    [Native to Managed Transition] 
    [Managed to Native Transition] 
    mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) + 0x6a bytes   
    mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool ignoreSyncCtx) + 0x7e bytes   
    mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) + 0x2c bytes   
    WindowsBase.dll!System.Windows.Threading.DispatcherOperation.Invoke() + 0x68 bytes 
    WindowsBase.dll!System.Windows.Threading.Dispatcher.ProcessQueue() + 0x15e bytes   
    WindowsBase.dll!System.Windows.Threading.Dispatcher.WndProcHook(System.IntPtr hwnd, int msg, System.IntPtr wParam, System.IntPtr lParam, ref bool handled) + 0x63 bytes
    WindowsBase.dll!MS.Win32.HwndWrapper.WndProc(System.IntPtr hwnd, int msg, System.IntPtr wParam, System.IntPtr lParam, ref bool handled) + 0xbe bytes   
    WindowsBase.dll!MS.Win32.HwndSubclass.DispatcherCallbackOperation(object o) + 0x7d bytes   
    WindowsBase.dll!System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate callback, object args, int numArgs) + 0x53 bytes
    WindowsBase.dll!MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(object source, System.Delegate method, object args, int numArgs, System.Delegate catchHandler) + 0x42 bytes   
    WindowsBase.dll!System.Windows.Threading.Dispatcher.InvokeImpl(System.Windows.Threading.DispatcherPriority priority, System.TimeSpan timeout, System.Delegate method, object args, int numArgs) + 0xb4 bytes   
    WindowsBase.dll!MS.Win32.HwndSubclass.SubclassWndProc(System.IntPtr hwnd, int msg, System.IntPtr wParam, System.IntPtr lParam) + 0x104 bytes   
    [Native to Managed Transition] 
    [Managed to Native Transition] 
    System.Windows.Forms.dll!System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(System.IntPtr dwComponentID, int reason, int pvLoopData) + 0x287 bytes   
    System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(int reason, System.Windows.Forms.ApplicationContext context) + 0x16c bytes 
    System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoop(int reason, System.Windows.Forms.ApplicationContext context) + 0x61 bytes   
    System.Windows.Forms.dll!System.Windows.Forms.Application.Run(System.Windows.Forms.Form mainForm) + 0x31 bytes 
    TestInfragisticsGrid.exe!TelerikTest3.Program.Main() Line 18 + 0x1d bytes   C#
    [Native to Managed Transition] 
    [Managed to Native Transition] 
    mscorlib.dll!System.AppDomain.ExecuteAssembly(string assemblyFile, System.Security.Policy.Evidence assemblySecurity, string[] args) + 0x6d bytes   
    Microsoft.VisualStudio.HostingProcess.Utilities.dll!Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() + 0x2a bytes 
    mscorlib.dll!System.Threading.ThreadHelper.ThreadStart_Context(object state) + 0x63 bytes  
    mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool ignoreSyncCtx) + 0xb0 bytes   
    mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) + 0x2c bytes   
    mscorlib.dll!System.Threading.ThreadHelper.ThreadStart() + 0x44 bytes  
    [Native to Managed Transition] 

1 Answer, 1 is accepted

Sort by
0
Accepted
Rossen Hristov
Telerik team
answered on 17 Jan 2013, 08:51 AM
Hi,

Unfortunately, we cannot determine what the problem is from the information provided.

Can you please send us a small dummy runnable sample project with your custom collection. The project should demonstrate how other ItemsControls (such as the standard WPF DataGrid for example) work properly where RadGridView fails. We need to be able to debug something in order to see what is going on. Also, let us know the exact steps that we need to make in order to reproduce the exception.

You can open a new support ticket in order to attach the sample project.

Thanks in advance.

Kind regards,
Rossen Hristov
the Telerik team

Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.

Tags
GridView
Asked by
eliraz
Top achievements
Rank 1
Answers by
Rossen Hristov
Telerik team
Share this question
or