2010-06-20 16 views
6

Ho un'applicazione a tre livelli in C#. Nel livello aziendale ho molti thread che fanno lo stesso lavoro. Voglio mostrare lo stato di avanzamento di ogni thread sull'interfaccia utente, ma non ho il riferimento del livello di presentazione.Come aggiornare l'interfaccia utente dal livello aziendale?

Come posso fare questo? Qual è il modo migliore per questo?

Grazie.

risposta

6

La risposta più appropriata qui è probabilmente quella di esporre un event da qualche parte sul livello aziendale. Il tuo codice UI può iscriversi all'evento e gestire l'evento passando al thread dell'interfaccia utente (se necessario) e aggiornandosi.

Quindi il codice di business non ha bisogno di conoscere l'interfaccia utente, e può funzionare lo stesso, senza alcuna interfaccia utente (ma come per tutti delegati/callback, è necessario verificare la presenza di null prima di tentare di richiamare il delegato) .

4

Il modo più semplice è che l'interfaccia utente passi al livello aziendale un delegato da chiamare (o un'interfaccia) in modo che possa indicare lo stato di avanzamento.

Questo è anche molto facile da testare, perché separa le preoccupazioni: nei test del livello aziendale, è possibile passare un delegato di test e assicurarsi che venga chiamato. Nei test dell'interfaccia utente, puoi eliminare il livello aziendale e fingere che c'è progresso, chiamare il delegato appropriato e controllare che l'UI si aggiorni correttamente.

Problemi correlati