簡體   English   中英

如何將數據設置為新的Appdomain

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM