Ho un'applicazione desktop con ciascuna finestra decopolata in un livello di presentazione (contenente il modulo / i controlli ecc.) e il livello dell'applicazione (Controller / Presenter - la denominazione è irrilevante per la domanda). Il livello di presentazione è passivo, visualizza solo i dati forniti dal livello dell'applicazione e comunica con esso utilizzando eventi. Il livello applicazione fa tutto il plumbing che collega gli eventi ai metodi che popolano il livello di presentazione con i dati dal DB.
Uso i thread o BackgroundWorker
per eseguire un caricamento che richiede molto tempo in background. La mia domanda è: quale layer dovrebbe essere a conoscenza dell'implementazione dell'operazione in background e avviare il thread in background?
Se metto il BackgroundWorker
nel livello di presentazione, l'implementazione del controllore è notevolmente semplificata - non gli importa se un particolare evento è stato attivato in background o meno. Tuttavia questo complica il codice del Form, che tende già ad essere gonfiato con i suoi controlli sui metodi di gestione degli eventi (clic, ecc.).
Mi piacerebbe sapere dove e perché dovrebbe essere il codice sensibile al background-thread.