Ho riscontrato un problema durante la sincronizzazione del mio modello e la visualizzazione dei thread
Ho una vista che è una tabella. In esso, l'utente può selezionare poche righe. Aggiorno la vista non appena l'utente fa clic su una riga qualsiasi poiché non desidero che l'interfaccia utente sia lenta. Questo aggiornamento viene eseguito da una logica che viene eseguita nella thread del controller di seguito.
Allo stesso tempo, il controller aggiorna anche i dati del modello, che si svolge in un thread diverso. Ad esempio, il controllore inserisce la query in una coda, che viene quindi eseguita dal thread del modello, che è un'interfaccia a thread singolo.
Non appena la query viene eseguita, il controller riceverà un segnale.
Ora, per mantenere la vista e il modello sincronizzati, aggiornerò nuovamente la vista in base al valore di ritorno della query (i dati restituiti dal modello), anche se ho già aggiornato la vista per quell'azione utente.
Tuttavia, sto affrontando problemi perché, richiedendo molto tempo al modello per restituire il risultato, all'epoca l'utente avrebbe eseguito più clic. Pertanto, a seguito dell'aggiornamento della vista in base alle informazioni del modello, la vista a volte torna allo stato in cui sono stati effettuati i clic precedenti
(Supponiamo che l'utente faccia clic tre volte su righe diverse. Aggiorno la vista non appena si verifica il clic. Inoltre, aggiorno la vista quando ottengo i dati dal modello, che dovrebbe essere uguale allo stato già aggiornato di la vista Ora, quando l'utente fa clic terza volta, ottengo i dati per il primo clic dal modello. Di conseguenza, la vista torna a uno stato generato dal primo clic)
C'è un modo per gestire questo problema di sincronizzazione?