知识大全 .NET下的多线程编程应用程序域

Posted

篇首语:忍耐力较诸脑力,尤胜一筹。。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 .NET下的多线程编程应用程序域相关的知识,希望对你有一定的参考价值。

.NET下的多线程编程应用程序域  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  一 应用程序域        在 NET中有个特点 在 NET中有个CLR 在操作系统和我们编程环境之间有个CLR 操作系统和CLR之间有种隔离 操作系统和运行库会在应用程序间提供某种隔离 为了确保一个应用程序的代码不会对其他不相关的应用程序产生影响 这种隔离是必须的        NET中新增了一个隔离层称为应用程序域 它是进程内部一个逻辑独立的部分 也就是说两个进程之间为了让它们不产生一些安全性的问题 一个应用程序出现错误 不会影响其他的应用程序 举个例子 在Windows下经常有某个应用程序出错了 会弹出一个框问是否要调试 在任务栏下把出错的这个应用程序关闭就行了 说明两个进程之间它们互相是不关联的 是因为它们之间有应用程序域的原因        公共语言运行库可以使用应用程序域来提供应用程序间的隔离        应用程序域可以理解为我的地盘我做主 比如 只有一个道路的话 里面跑着大货车 私家车 行人 那么大货车出事故了是不必会影响到私家车和行人 同样它们三个中任何一个出现问题都会影响到其它的两个 因为它们在一个道路里面 那么现在假设有三个车道 快车道跑大货车的 慢车道跑私家小型车的 人行道走人的 如果大货车出现事故了 是不就不会不影响到私家车和行人 那么大货车在自己的道路里是不想怎么开就怎么开 倒著开都没事 私家车和行人同理 因为它们是在三个不同的道路里 这里三个车道相当于应用程序域 大货车和私家车以及行人相当于三个进程        使用应用程序域        能够在不停止整个进程的情况下 停止某一个应用程序 一个进程中包含好多应用程序 可以把某个应用程序停止 不影响其他的应用程序        在一个应用程序中的代码不能访问直接访问另外一个应用程序中的代码或资源        代码的行为范围由它所运行的所在应用程序决定        向代码授予权限可以由代码运行所在的应用程序域来决定        二 应用程序域和线程的关系        在运行时 所有的托管代码被加载到一个应用程序域当中 由特定的操作系统线程来运行的        应用程序域和线程之间不是一一对应的 也就是说 一个应用程序域可以执行多个线程 一个线程可以跨越多个应用程序域 但是在某个时间点上 某个线程还是在一个应用程序域当中的        通过调用Thread GetDomain方法 可以确定线程执行所在的域        三 线程跨越多个应用程序域实例        using System;        using System Collections Generic;        using System Linq;        using System Text;        using System Threading;        namespace AppDomainAndThread                class Program                static void Main(string[] args)                //创建一个应用程序域        AppDomain appdomain = AppDomain CreateDomain( MyAppDomain )         appdomain SetData( DomainKey DomainValue )         CommonMethod()         //CrossAppDomainDelegate它是个委托 这个委托的作用是跨应用程序域调用的

  CrossAppDomainDelegate mydelegate = new CrossAppDomainDelegate(CommonMethod)         //AppDomain的DoCallBack方法用于跨越应用程序调用 在另外一个应用程序域中执行代码也就是我们的输出内容        appdomain DoCallBack(mydelegate)         Console ReadKey()                 /// <summary>        /// 两个应用程序域都要调用的方法        /// </summary>        private static void CommonMethod()                //获得当前的应用程序域        AppDomain appdomain = AppDomain CurrentDomain;        Console WriteLine( 应用程序域它的值是 + appdomain GetData( DomainKey ) + 在 + appdomain FriendlyName ToString() + 中找到的 运行的线程ID是 + AppDomain GetCurrentThreadId() ToString() + )                                 四 运行效果        我们发现两个应用程序域分别是 AppDomainAndThread vshost exe 和 MyAppDomain 它们两个的ThreadID是一样的都是 在两个应用程序域执行的是同一个线程

cha138/Article/program/net/201311/12077

相关参考

知识大全 基于.NET的多线程编程入门

基于.NET的多线程编程入门  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!多线程在构建大型系统的时

知识大全 用C#实现HTTP协议下的多线程文件传输

用C#实现HTTP协议下的多线程文件传输  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  很多人都

知识大全 .Net 下跟踪线程挂起和程序死循环

.Net下跟踪线程挂起和程序死循环  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  下的程序调试相

知识大全 详解.NET编程中的线程冲突

详解.NET编程中的线程冲突  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一什么是线程冲突  

知识大全 详解.NET编程过程中的线程冲突

详解.NET编程过程中的线程冲突  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一什么是线程冲突

知识大全 详解.NET编程过程中的线程冲突[3]

详解.NET编程过程中的线程冲突[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  四互斥锁 

知识大全 详解.NET编程过程中的线程冲突[1]

详解.NET编程过程中的线程冲突[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一什么是线

知识大全 详解.NET编程过程中的线程冲突[2]

详解.NET编程过程中的线程冲突[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  比如说我在

知识大全 关于线程的停止问题

  多线程是java的一个优势java使得程序员可以很方便的进行多线程程序开发获得更好的性能  关于多线程的概念以及一般的多线程编程比如如何以及为何实现runnable接口为何stop()会被Depr

知识大全 解析.Net框架下的XML编程技术[3]

解析.Net框架下的XML编程技术[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!usingS