如何将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之前设置的变量。那么如何以正确的方式设置它们呢?
答案 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);