Operazioni in background in controller / relatore o modulo?

2

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.

    
posta Mariusz Jamro 03.10.2016 - 11:31
fonte

0 risposte

Leggi altre domande sui tag