Hi,
I have a myRadGridView binded to a QueryableEntityCollectionView<tableName> property. All worked perfect.
But when I create a Task to fill that property (that was binded to my RadGridView) it appears a messaje saying:
Ocurrió System.InvalidOperationException
HResult=-2146233079
Message=El subproceso que realiza la llamada no puede obtener acceso a este objeto porque el propietario es otro subproceso.
Source=WindowsBase
StackTrace:
en System.Windows.DependencyObject.GetValue(DependencyProperty dp)
en Telerik.Windows.Data.SortDescriptor.get_Member() en c:\TB\117\WPF_Scrum\Release_WPF\Sources\Development\Core\Data\Data\Sorting\SortDescriptor.cs:línea 22
InnerException:
I'm using a MVVM pattern.
The definition of my property binded to my RadGridView is:
The code I have written in the ViewModel is:
The RadGridView is:
In the ViewModel, if I change the definition of the property and the code of the Task for the next one code, it works:
So, my question is:
How can I use QueryableEntityCollectionView<tableName> in a Task?
Thanks.
Sonia.
I have a myRadGridView binded to a QueryableEntityCollectionView<tableName> property. All worked perfect.
But when I create a Task to fill that property (that was binded to my RadGridView) it appears a messaje saying:
Ocurrió System.InvalidOperationException
HResult=-2146233079
Message=El subproceso que realiza la llamada no puede obtener acceso a este objeto porque el propietario es otro subproceso.
Source=WindowsBase
StackTrace:
en System.Windows.DependencyObject.GetValue(DependencyProperty dp)
en Telerik.Windows.Data.SortDescriptor.get_Member() en c:\TB\117\WPF_Scrum\Release_WPF\Sources\Development\Core\Data\Data\Sorting\SortDescriptor.cs:línea 22
InnerException:
I'm using a MVVM pattern.
The definition of my property binded to my RadGridView is:
private QueryableEntityCollectionView<PROTOCOL> protocolsView;public QueryableEntityCollectionView<PROTOCOL> ProtocolsView{ get { return protocolsView; } set { protocolsView = value; RaisePropertyChanged("ProtocolsView"); }}Task.Factory.StartNew(new Action(() => { DbContext dbContext = new wafintellectEntities(Global.Configuracion.CadenaConexionBDEntity); // connection to BD ObjectContext objectContext = ((System.Data.Entity.Infrastructure.IObjectContextAdapter)dbContext).ObjectContext; bool error = false; try { //ProtocolsView = new QueryableEntityCollectionView<PROTOCOL>(objectContext, "PROTOCOLs"); results = new QueryableEntityCollectionView<PROTOCOL>(objectContext, "PROTOCOLs"); } catch (Exception e) { error = true; MessageBox.Show("Cadena de conexión errónea. Por favor, configure la conexión con la BD correctamente." + System.Environment.NewLine + e.Message, "Imposible cargar datos", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK); } mi.Invoke(new Action(() => { if (!error) { ProtocolsView = results; // "ProtocolsView " is the property binded to my RadGridView } }));
}));The RadGridView is:
<telerik:RadGridView x:Name="grdProtocol" ItemsSource="{Binding ProtocolsView}" AutoGenerateColumns="False" SelectionUnit="FullRow" GridLinesVisibility="Horizontal" CanUserDeleteRows="False" CanUserInsertRows="False" CanUserFreezeColumns="False" RowIndicatorVisibility="Collapsed" IsReadOnly="True" ShowGroupPanel="False" Grid.ColumnSpan="2"></telerik:RadGridView>In the ViewModel, if I change the definition of the property and the code of the Task for the next one code, it works:
private IQueryable protocolsView; public IQueryable ProtocolsView { get { return protocolsView; } set { protocolsView = value; RaisePropertyChanged("ProtocolsView"); } }Task.Factory.StartNew(new Action(() => { try { wafintellectEntities myEntity = new wafintellectEntities(Global.Configuracion.CadenaConexionBDEntity); // connection to BD ProtocolsView = myEntity.PROTOCOLs; // get the entire data of the table PROTOCOLs } catch { MessageBox.Show("Error al abrir BD..."); } }));So, my question is:
How can I use QueryableEntityCollectionView<tableName> in a Task?
Thanks.
Sonia.