應用程式域

2022-02-25 22:44:22 字數 2175 閱讀 4507

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.reflection;

using system.runtime.remoting;

using system.threading;

//獲取當前應用程式域的友好名字

string domainname = callthreaddomin.friendlyname;

console.writeline("domain name is :",domainname);

//獲取當前程式集的入口點全名

string exeassembly = assembly.getentryassembly().fullname;

console.writeline("當前程式集的入口點是:",exeassembly);

// 跨應用程式使用引用封送

//environment 類封裝了關於當前環境和執行平台資訊的相關資訊

console.writeline(" demo #1",environment.newline);

console.writeline("********************");

// 建立乙個新的應用程式域

//建立指定型別的新例項. 形參指定定義型別的程式集以及型別的名稱

//其實該例項是ad #2 應用程式域中 marshalbyreftype 型別的乙個**

//通俗的理解就是繫結應用程式域

mbr = (marshabyreftype)ad2.createinstanceandunwrap(exeassembly, typeof(marshabyreftype).fullname);

console.writeline("type=",mbr.gettype());   //clr 在型別撒謊

console.writeline("-------");

// 檢查該型別是不是乙個真正的**物件

console.writeline("is proxy=",remotingservices.istransparentproxy(mbr));

//demo2 : 跨應用程式域使用按值封送

console.writeline("demo #2", environment.newline);

// 物件的方法返回所返回物件乙個副本   物件按值封送

marshalbyvaltype mbrv = mbr.methodwithreturn();

console.writeline("is proxy=", remotingservices.istransparentproxy(mbrv));

// 此時實際上我們是在真正的 marshalbyvaltype 物件上呼叫方法

console.writeline("returned object created " + mbrv.tostring());

//此類繼承 marshalbyrefobject 跨應用程式域使用引用封送

public sealed class marshabyreftype:marshalbyrefobject

ctor running in ",this.gettype().tostring(),thread.getdomain().friendlyname);

console.writeline("-----------");

}public void somemethod()

public marshalbyvaltype methodwithreturn()

}[serializable]  // 指示該類可以被序列化

public sealed class marshalbyvaltype : object

ctor running is in,ceated on ",this.gettype().tostring (),thread.getdomain().friendlyname,m_creattiontime);

}public override string tostring()

}//既不繼承marshalbyrefobject 也不能序列化

public sealed class nonmarshalabletype : object}}

}

應用程式域

一種邊界,它由公共語言執行庫圍繞同一應用程式範圍內建立的物件建立 即,從應用程式入口點開始,沿著物件啟用的序列的任何位置 應用程式域有助於將在乙個應用程式中建立的物件與在其他應用程式中建立的物件隔離,以使執行時行為可以預知。在乙個單獨的程序中可以存在多個應用程式域。以前使用程序邊界來隔離在同一臺計算...

應用程式域

一種邊界,它由公共語言執行庫圍繞同一應用程式範圍內建立的物件建立 即,從應用程式入口點開始,沿著物件啟用的序列的任何位置 應用程式域有助於將在乙個應用程式中建立的物件與在其他應用程式中建立的物件隔離,以使執行時行為可以預知。在乙個單獨的程序中可以存在多個應用程式域。以前使用程序邊界來隔離在同一臺計算...

應用程式域

一種邊界,它由公共語言執行庫圍繞同一應用程式範圍內建立的物件建立 即,從應用程式入口點開始,沿著物件啟用的序列的任何位置 應用程式域有助於將在乙個應用程式中建立的物件與在其他應用程式中建立的物件隔離,以使執行時行為可以預知。在乙個單獨的程序中可以存在多個應用程式域。以前使用程序邊界來隔離在同一臺計算...