2016-05-17 1 views
0

Comment définir une nouvelle définition d'AppDomain. Lorsque je DoCallBack à mon testFunc je reçois "System.NullReferenceException" exception. Ce que je fais mal?Comment définir les données dans le nouveau domaine d'application

var client = "test"; 
var engine = 123; 

AppDomain appDomain = AppDomain.CreateDomain("newDomain"); 

appDomain.SetData("client", client); 
appDomain.SetData("engine", engine); 

appDomain.DoCallBack(testFunc); 

private void testFunc() 
{ 
    var client = (string)AppDomain.CurrentDomain.GetData("client"); 
    var engine = (int)AppDomain.CurrentDomain.GetData("engine"); 

    Console.WriteLine("client: " + client); 
    Console.WriteLine("engine: " + engine); 
} 

La définition de vars globaly pour AppDomain ne change pas d'adresse, même erreur.

AppDomain.CurrentDomain.SetData("client", client); 
AppDomain.CurrentDomain.SetData("engine", engine); 

post-scriptum Je reçois System.NullReferenceException, car AppDomain ne trouve pas les vars que j'ai configurés avant DoCallBack. Alors, comment les configurer correctement?

+0

double possible de [Qu'est-ce qu'un NullReferenceException, et comment puis-je corriger ?] (http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) – Nasreddine

+0

Non, ce n'est pas le cas. – SLI

+0

J'ai créé une application Console, copié le code fourni et tout fonctionne comme prévu. – Kzrystof

Répondre

0

Si vous nous montrez le code correct, vous ne pouvez pas définir la méthode non-statique et sans instance à DoCallBack().

La méthode doit être statique:

private static void testFunc() 
{ 
    var client = (string)AppDomain.CurrentDomain.GetData("client"); 
    var engine = (int)AppDomain.CurrentDomain.GetData("engine"); 

    Console.WriteLine("client: " + client); 
    Console.WriteLine("engine: " + engine); 
} 

ou vous devez créer une instance avant passer dans DoCallBack()

var instance = new Program(); 
appDomain.DoCallBack(instance.testFunc);