38 messaggi dal 27 dicembre 2011
Ciao,

ho una dll che esegue alcune operazioni. In una di queste operazioni la DLL deve notificare al programma principale che c'è un'operazione da eseguire e una volta termimata tale operazione il programma principale deve a sua volta notificare alla DLL l'esito dell'operazione stessa.

Come si potrebbe realizzare una cosa del genere? Eventi?
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
sì, potresti usare un evento a cui il programma principale si sottoscrive. Poi, quando ha finito il suo lavoro, invocherà un metodo nella DLL per notificargli il risultato.

In alternativa, la classe della DLL potrebbe accettare un parametro di tipo IQualcosa (es. IWorker) nel suo costruttore.
private readonly IWorker worker;
public class MiaClasseNellaDll(IWorker worker) {
  this.worker = worker;
}


L'interfaccia IWorker sarà fatta più o meno così:
public interface IWorker {
  Task<Risultato> DoWork(string param1, object param2);
}


Se il programma principale vuole crearsi un'istanza di MiaClasseNellaDll, dovrà anche fornire una sua implementazione di IWorker come parametro del costruttore.

La dll invocherà il metodo DoWork per avviare il lavoro sul programma principale, eventualmente passando dei parametri. Al termine dell'elaborazione, il programma principale restituirà un oggetto di tipo Risultato e questo sarà il suo modo di notificare la dll con l'esito dell'elaborazione.
Ho messo Task<Risultato> perché ho supposto che l'operazione fosse asincrona ma non è detto che sia così.

ciao,
Moreno
Modificato da BrightSoul il 14 settembre 2017 18.27 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.