Je voudrais savoir, si j'ai une variable, par exemple, une chaîne, comment passer sa valeur à mon nouveau domaine d'application:Comment passer une variable d'un domaine d'application à un autre
static string _str;
static void Main(string[] args) {
_str = "abc";
AppDomain domain = AppDomain.CreateDomain("Domain666");
domain.DoCallBack(MyNewAppDomainMethod);
AppDomain.Unload(domain);
Console.WriteLine("Finished");
Console.ReadKey();
}
static void MyNewAppDomainMethod() {
Console.WriteLine(_str); //want this to print "abc"
}
Merci
Merci. Maintenant, j'aimerais savoir comment obtenir des informations sur mon domaine principal. C'est-à-dire, retourner un objet. Merci! –
Et une autre question. Je vois AppDomainInitializerArguments n'accepte qu'un tableau de chaînes. Dans ce cas, je ne veux vraiment que des chaînes, donc il n'y a pas de problème, mais si je voulais d'autres types de données? Rien à faire à ce sujet? –
Les domaines d'application ne partagent pas un espace mémoire d'objet, et donc la transmission d'objets nécessite une sérialisation quelconque. Pour retourner un objet, vous pouvez faire DoCallBack sur le domaine d'origine, si vous pouvez vous en procurer (je ne vois pas de moyen facile de le faire). Vous pouvez également établir une autre forme de canal interprocessus entre les domaines d'application, par ex. un tuyau nommé. –