[英]How to Setdata to new Appdomain
如何將數據設置為新創建的AppDomain。 當我對我的testFunc進行DoCallBack時,我收到“ 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不會更改anathing,同樣的錯誤。
AppDomain.CurrentDomain.SetData("client", client);
AppDomain.CurrentDomain.SetData("engine", engine);
PS我收到System.NullReferenceException,因為AppDomain找不到在DoCallBack之前設置的變量。 那么如何以正確的方式設置它們呢?
如果您向我們展示了正確的代碼,那么您就不能將非靜態方法設置為沒有實例方法的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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.