Ho un BindingList <> di una classe impostata sulla proprietà DataSource di BindingSource, che è a sua volta impostata sulla proprietà DataSource di un DataGridView.BindingList <> ListChanged event
1. È a mia conoscenza che qualsiasi aggiunta all'elenco genererà un evento ListChanged che si propagherà attraverso BindingSource e quindi su DataGridView, che si aggiorna automaticamente per visualizzare la modifica. Questo accadrà perché gli eventi sono stati automaticamente collegati. (Sì?)
Questo va tutto bene quando tutto il lavoro viene eseguito sul thread dell'interfaccia utente, ma quando l'elenco viene creato e modificato da un thread non dell'interfaccia utente, in definitiva si verifica un'eccezione cross-thread quando la griglia è aggiornato. Posso capire perché succede, ma non so come risolverlo ...
2. 2. Quello che sto avendo difficoltà a capire, è dove dovrei intercettare al meglio l'evento ListChanged per provare a fare il marshalling sul thread dell'interfaccia utente ? Sto indovinando che ho bisogno di un riferimento al thread dell'interfaccia utente in qualche modo per aiutare a fare questo?
Ho letto molti post/articoli su questo, ma sto facendo fatica perché non comprendo appieno i meccanismi al lavoro qui.
Non cambierò mai alcun elemento una volta che sono nella lista, aggiungendoli solo e cancellando inizialmente l'elenco.
(sto usando .NET 2,0)
FANTASTICO. Se potessi revocare questo milione di volte, lo farei. – bulltorious
Lo capisco, ma comunque è magico e fa quello che tutti vogliono fare. Aggiorna i controlli tramite la struttura dati e non devi preoccuparti di invocare. – Beached
@bulltorious potresti offrire una taglia :) –