Sto scrivendo una classe che esegue una determinata operazione in una libreria. Ma l'operazione è noiosa, e voglio essere in grado di scoprire l'avanzamento del metodo all'interno di quella classe in modo che possa usarlo in un'applicazione WinForms per segnalare i progressi.Scrittura di un metodo che riporta i progressi
Sto pianificando di eseguire la mia classe su un altro thread nella mia applicazione WinForms e voglio che la classe sia separata dalle preoccupazioni dell'applicazione WinForms, e non voglio legarla a qualcosa di specifico diverso da quello lo fa.
Quale sarebbe il modo migliore per implementare un meccanismo di segnalazione dei progressi in una classe di biblioteca?
Sarebbe una buona idea avere in qualche modo una variabile di avanzamento nella classe e aggiungere un listener di eventi ad esso nella mia applicazione WinForms? E se lo è, come posso farlo?
Edit: Ho usato la classe BackgroundWorker
prima, ma il mio problema è che non voglio che la mia classe di libreria da occupa una delle operazioni multithreading. Quindi non voglio invocare ReportProgress
nella classe della libreria, voglio (forse) avere una variabile nella classe che contiene il progresso corrente e voglio che il thread dell'interfaccia utente in qualche modo "iscriva" ad esso. Non so se sia un buon modo di progettarlo però.
Ci sono molti approcci diversi a questo, ma come si presenta il tuo codice esistente ..? sarebbe di grande aiuto se fornissi quello che hai provato fino ad ora .. – MethodMan
Al momento non ho molto codice. Volevo scoprire come procedere prima di scrivere la lezione. Lo apprezzerei molto se potessi indicarmi alcuni noti approcci a questo problema. – hattenn