2011-06-05 17 views

risposta

14

Se hai creato un oggetto in un altro dominio, ad es. con AppDomain.CreateInstanceAndUnwrap, tutto ciò che serve per chiamare l'oggetto in un altro dominio è chiamare il metodo di un oggetto.

Il modo più semplice per effettuare una chiamata di dominio tra applicazioni è semplicemente effettuare una chiamata direttamente su quell'oggetto, che in realtà viene esposto da un altro dominio tramite il suo proxy, esistente in un altro dominio.

UPD
Purtroppo ricevendo il dominio host non è così facile. È necessario enumerare domini come this e trovare tra loro quello host. Suppongo che il dominio host sia quello per cui il metodo AppDomain.IsDefaultAppDomain restituisce true.

+0

Completo ho dimenticato questo metodo. In realtà molto più conveniente rispetto all'utilizzo di DoCallBack;) –

+0

Nice! È possibile effettuare callback in questo modo? – user626528

+2

@ user626528 Sì, ma non solo un callback per un metodo di un oggetto. Se crei un oggetto in un altro dominio, tutti i suoi metodi vengono chiamati in quel dominio. Suppongo che dovresti creare una classe che sarà responsabile della tua callback, quindi creare un'istanza di quella classe in un altro dominio tramite 'AppDomain.CreateInstanceAndUnwrap' e, infine, chiamare il metodo sull'istanza nell'altro dominio. – Centro

3

Generalmente si ottiene utilizzando AppDomain.DoCallBack. È necessario assicurarsi che se si desidera passare parametri, è necessario creare un oggetto serializzabile, il cui metodo si passa al metodo descritto sopra. Nel metodo di richiamata è possibile eseguire un altro callback AppDomain per passare il risultato all'appDomain originale.

+0

Non vedo, come passare parametro/risultato con esso. – user626528

+1

@ user626528 Non è possibile passare parametri o ottenere risultati direttamente. Quello che puoi fare è usare [SetData] (http://msdn.microsoft.com/en-us/library/system.appdomain.setdata.aspx) e [GetData] (http://msdn.microsoft.com /en-us/library/system.appdomain.getdata.aspx) metodo del dominio dell'app per farlo. – Prasad

Problemi correlati