Qual è la differenza tra delegatore e dispatcher?
Non sono abbastanza sicuro di entrambi i concetti.
Qual è la differenza tra delegatore e dispatcher?
Non sono abbastanza sicuro di entrambi i concetti.
La delega assegna una responsabilità ad un altro oggetto. Ad esempio, se sono invitato a un incontro e lo assegno a un collega junior, lo sto delegando. Il punto da notare qui è che è il collega junior che parteciperà all'incontro e non c'è nessun intermediario tra lui e me.
L'invio non sta delegando. Dispatcher è più simile a un intermediario che inoltra una richiesta a qualcun altro. Per esempio, per partecipare all'incontro, il mio astuto collega junior potrebbe chiedere a una compagnia di taxi un ritiro e il tizio che riceve la richiesta potrebbe inviarlo a un tassista nelle vicinanze. Il punto qui è che il dispatcher sta solo seguendo la richiesta.
Dispatcher
delegato
Considera questo: delegate.Invoke/BeginInvoke
e this.dispatcher.Invoke/BeginInvoke
.
BeginInvoke
significa: "Fai questo e torna prima che sia completato. A me non interessa il valore restituito o puoi richiamarmi a questo indirizzo a un certo punto in futuro". Invoke
significa: "Fai questo e mi siederò qui e attenderne il completamento." In breve: The BeginInvoke is an asynchronous call. It executes a delegate asynchronously on the thread the Dispatcher is associated with.
Leggi altre domande sui tag object-oriented mvc thread