I already have a work-around and I don't have time to craft an example.
When running two dispatchers in different threads, ie launching the following code twice:
public void LaunchInThread()
        {
            Thread _thread = new Thread(() =>
            {
              Application app = new Application();
              app.Run(new Window());
            });
            _thread.SetApartmentState(ApartmentState.STA);
            _thread.Start();
        }And setting column hierarchical column headers to some but not all columns by code, ie:
if( ! first_column){
   column.ColumnGroupName = "groupName";
   if (radGridView.ColumnGroups.FirstOrDefault(x => x.Name == "groupName") != null) return;
   radGridView.ColumnGroups.Add(new GridViewColumnGroup { Header = "groupName", Name = "groupName" });
}My guess is that when no header is set, by default an static empty GridViewColumnGroup is reused. And as it's non-freezable it crashes.