如何将数据设置为新的Appdomain

时间:2016-05-17 20:54:03

标签: c# appdomain

如何将SetData设置为新创建的AppDomain。当我DoCallBack到我的testFunc时,我收到" System.NullReferenceException "例外。我做错了什么?

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);
 }

为AppDomain设置vars globaly不会改变同样的错误。

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

P.S。 我收到System.NullReferenceException,因为AppDomain无法找到我在DoCallBack之前设置的变量。那么如何以正确的方式设置它们呢?

1 个答案:

答案 0 :(得分:0)

如果您向我们展示了正确的代码,那么您就无法将非静态和无实例方法设置为DoCallBack()

该方法应该是静态的:

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);
 }

或者你必须在传递到DoCallBack()

之前创建一个实例
var instance = new Program();
appDomain.DoCallBack(instance.testFunc);