perche il seguente pezzo di codice:comportamento DoCallBack CrossAppDomainDelegate per i delegati non statici
// Create a new application domain
AppDomain ad = AppDomain.CreateDomain("New domain");
Worker work = new Worker();
// if Worker class is marked as 'MarshalByRefObject', this will run in current
// appdomain.
// if Worker class is NOT marked as 'MarshalByRefObject' and is marked as
// 'Serializable', this will run in a new appdomain.
ad.DoCallBack(work.PrintDomain);
// or ad.DoCallBack(new CrossAppDomainDelegate(work.PrintDomain));
// But for static methods:
// If ppp method is static, no marking is required and it will run in
// a new AppDomain.
ad.DoCallBack(Worker.ppp);
come spiegare questo comportamento di DoCallBack
?
- Perché il metodo non statico
PrintDomain
eseguito nel dominio corrente quando la classe è contrassegnataWorker
MarshalByRefObject
? - Perché il metodo non statico
PrintDomain
viene eseguito in un nuovo AppDomain quando la classeWorker
è contrassegnata conSerializable
? - Perché non il metodo statico bisogno di alcun marcature?
Il tuo metodo 'PrintDomainStatic' non è statico. Quando viene utilizzato il proxy ('MarshalByRefObject' non commentato) l'output è' TestApplication1.vshost.exe' – Troopers