El mensaje de error proporcionado, "Este tipo of CollectionView no admite cambios en su SourceCollection desde un subproceso diferente del subproceso Dispatcher", indica un intento de modificar una ObservableCollection desde un subproceso que no es UI.
Como se explica en el código proporcionado, el Load( ) rellena la _matchObsCollection ObservableCollection a partir de una lista de objetos GetMatchDetailsDC. Sin embargo, esta actualización se realiza fuera del hilo de la interfaz de usuario.
En WPF, los elementos de la interfaz de usuario, como DataGrid, se crean en el hilo de la interfaz de usuario y mantienen un afinidad del hilo. Cualquier modificación a estos elementos se debe realizar desde el hilo de la interfaz de usuario para garantizar la seguridad del hilo.
Para resolver este problema, puede usar App.Current.Dispatcher.Invoke(( Acción)delegar {... }) método para invocar la actualización de la colección en el hilo de la interfaz de usuario:
matchList = proxy.GetMatch().ToList();
foreach (EfesBet.DataContract.GetMatchDetailsDC match in matchList)
{
App.Current.Dispatcher.Invoke((Action)delegate // Carga de datos asincrónica en WPF
Si bien el uso de métodos asincrónicos para la carga de datos es común, es importante considerar la seguridad de los subprocesos al manipular elementos de la interfaz de usuario desde subprocesos que no son de la interfaz de usuario. Asegúrese siempre de que cualquier actualización de los elementos de la interfaz de usuario, como la modificación de una ObservableCollection, se realice en el subproceso de la interfaz de usuario para evitar errores relacionados con los subprocesos.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3