第16章 进程、应用程序域和对象上下文
来源:互联网 发布:亚马逊读书软件 编辑:程序博客网 时间:2024/06/04 19:22
一、进程
一个 正在运行的应用程序 的 固定的安全边界(每个进程都有个唯一标识符PID)
System.Diagnostics.Process
1、列举运行中的进程
//System.Diagnostics.Process 类型的数组,它表示指定计算机上运行的所有进程资源 var runingProcess = from proc in Process.GetProcesses(".") orderby proc.Id select proc; foreach (var p in runingProcess) { Console.WriteLine("进程id={0},进程名={1}.",p.Id,p.ProcessName); }
2、获得指定进程
Process theProc = Process.GetProcessById(1524); Console.WriteLine("进程id={0},进程名={1}.",theProc.Id,theProc.ProcessName);
3、获得进程的线程集合
Process theProc = Process.GetProcessById(1524); ProcessThreadCollection theThreads = theProc.Threads;//获得进程中运行的一组线程 foreach(ProcessThread pt in theThreads) { Console.WriteLine("线程ID={0},开始时间={1},优先级={2}",pt.Id,pt.StartTime.ToShortDateString(),pt.PriorityLevel); }
4、进程中模块集合
Process theProc = Process.GetProcessById(1524); ProcessModuleCollection theMods = theProc.Modules;//获得进程中的*dll或.exe本身 foreach (ProcessModule pm in theMods) { Console.WriteLine("进程中的模块名={0}",pm.ModuleName); }
5、编程方式 启动或结束进程
Process ieProc = null; try { ieProc = Process.Start("IExplore.exe","www.xx.com");//启动IE进程 } catch(InvalidOperationException ex) { Console.WriteLine(ex.Message); } Console.Write("按回车杀死进程:{0}",ieProc.ProcessName); Console.ReadLine(); try { ieProc.Kill();//杀死进程 } catch (InvalidOperationException ex) { Console.WriteLine(ex.Message); }
二、.NET 可执行程序 承载在 应用程序域(进程的逻辑分区)
System.AppDomain
1、与默认应用程序域进行交互
//访问当前线程的应用程序域 AppDomain defaultAD = AppDomain.CurrentDomain; Console.WriteLine("应用程序域名称:{0}",defaultAD.FriendlyName); Console.WriteLine("应用程序域 ID:{0}",defaultAD.Id); Console.WriteLine("是否是默认应用程序域:{0}",defaultAD.IsDefaultAppDomain()); Console.WriteLine("应用程序域路径:{0}",defaultAD.BaseDirectory); Console.ReadLine();
效果:
2、枚举加载程序集
//访问当前线程的应用程序域 AppDomain defaultAD = AppDomain.CurrentDomain; Assembly[] loadedAssemblies = defaultAD.GetAssemblies();//应用程序域中加载的程序集 foreach(Assembly a in loadedAssemblies) { Console.WriteLine("程序集名:{0},版本:{1}",a.GetName().Name,a.GetName().Version); } Console.ReadLine();
3、加载程序集时,发生
//访问当前线程的应用程序域 AppDomain defaultAD = AppDomain.CurrentDomain; defaultAD.AssemblyLoad += (o, s) => { Console.WriteLine(s.LoadedAssembly.GetName().Name);//程序集简单名 }; Console.ReadLine();
4、创建新的应用程序域
AppDomain newAd = AppDomain.CreateDomain("secondappdomain");
5、自定义应用程序域中加载程序集
newAd.Load("CarLibrary");//将CarLibrary.dll加载到新域中
6. 卸载应用程序域
AppDomain.Unload(newAd);
三、上下文边界
1、定义上下文绑定对象
//自动线程安全类 SportsCarTS [Synchronization] class SportsCarTS : ContextBoundObject//加载到一个同步的上下文中 { }
0 0
- 第16章 进程、应用程序域和对象上下文
- 进程、应用程序域、对象上下文
- 进程、应用程序域、程序集、对象上下文
- 进程、应用程序域、程序集、对象上下文
- 进程和线程及应用程序域,上下文
- 进程和线程及应用程序域,上下文
- C# 进程应用程序域上下文(转)
- 进程上下文和中断上下文
- 进程上下文和中断上下文
- 进程上下文和中断上下文
- 进程上下文和中断上下文
- 进程上下文和中断上下文
- 进程上下文和中断上下文
- 进程上下文和中断上下文
- 进程上下文和中断上下文
- 进程上下文和中断上下文
- 进程上下文和中断上下文
- 进程上下文和中断上下文
- jlink_for_linux
- html借助一般处理程序实现文件上传到服务器
- Ubuntu下搜狗输入的安装
- [leetcode-92]Reverse Linked List II(c++)
- HDU 1198 Farm Irrigation 并查集
- 第16章 进程、应用程序域和对象上下文
- valgrind+kvalgrind
- 漫谈程序员(一)程序员未来发展三大方向
- SAP服务器性能管理常用的功能解析
- flex bison 笔记
- cygwin和mingw的区别
- 4.2 设计具有背景图的按钮---ImageButton的焦点以及事件的处理
- tarjan算法求强连通分量
- 在mac环境下创建cocos2d-x工程出现"permission Denied"的解决方案