dev*_*ium 15 .net c# vb.net appdomain cross-domain
我想知道,如果我有一个变量,例如一个字符串,如何将其值传递给我的新app域:
static string _str;
static void Main(string[] args) {
_str = "abc";
AppDomain domain = AppDomain.CreateDomain("Domain666");
domain.DoCallBack(MyNewAppDomainMethod);
AppDomain.Unload(domain);
Console.WriteLine("Finished");
Console.ReadKey();
}
static void MyNewAppDomainMethod() {
Console.WriteLine(_str); //want this to print "abc"
}
Run Code Online (Sandbox Code Playgroud)
谢谢
Rom*_*lle 22
解决你的第一个和第二个要求(传递一个值并检索另一个值),这是一个非常简单的解决方案:
static void Main(string[] args)
{
AppDomain domain = AppDomain.CreateDomain("Domain666");
domain.SetData("str", "abc");
domain.DoCallBack(MyNewAppDomainMethod);
string str = domain.GetData("str") as string;
Debug.Assert(str == "def");
}
static void MyNewAppDomainMethod()
{
string str = AppDomain.CurrentDomain.GetData("str") as string;
Debug.Assert(str == "abc");
AppDomain.CurrentDomain.SetData("str", "def");
}
Run Code Online (Sandbox Code Playgroud)
Ore*_*ner 14
使用带有AppDomainSetup参数的AppDomain.CreateDomain变体之一.在AppDomainSetup对象中,将AppDomainInitializerArguments成员设置为要传递给新应用程序域的字符串数组.
请参阅http://msdn.microsoft.com/en-us/library/system.appdomainsetup.appdomaininitializerarguments.aspx上的示例代码.
使用问题中的代码,更改可能看起来像(未测试):
static voide Main(string[] args) {
_str = "abc";
AppDomainSetup setup = new AppDomainSetup();
setup.AppDomainInitializer = new AppDomainInitializer(MyNewAppDomainMethod);
setup.AppDomainInitializerArguments = new string[] { _str };
AppDomain domain = AppDomain.CreateDomain(
"Domain666",
new Evidence(AppDomain.CurrentDomain.Evidence),
setup);
Console.WriteLine("Finished");
Console.ReadKey();
}
static void MyNewAppDomainMethod(string[] args) {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12959 次 |
| 最近记录: |