当前位置:编程学习 > C#/ASP.NET >>

12篇学通C#网络编程——第一篇 基础之进程线程

在C#的网络编程中,进程和线程是必备的基础知识,同时也是一个重点,所以我们要好好的掌握一下。
一:概念
          首先我们要知道什么是”进程”,什么是“线程”,好,查一下baike。
  进程:是一个具有一定独立功能的程序关于某个数据集合的一次活动。它是操作系统动态执行的基本单元,
           在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
  线程:是"进程"中某个单一顺序的控制流。
 
关于这两个概念,大家稍微有个印象就行了,防止以后被面试官问到。
 
二:进程
       framework里面对“进程”的基本操作的封装还是蛮好的,能够满足我们实际开发中的基本应用。
 
<1> 获取进程信息
       framework中给我们获取进程的方式还是蛮多的,即可以按照Name获取,也可以按照ID获取,也可以获取本地和远程的进程信息。
1    public Process[] GetProcess(string ip = "")
2         {
3             if (string.IsNullOrEmpty(ip))
4                 return Process.GetProcesses();
5
6             return Process.GetProcesses(ip);
7         }
复制代码
 
 Process process = Process.GetProcessById(Convert.ToInt32(processID));
 
<2> 启动和停止进程
  其实这个也没啥好说的,不过有一个注意点就是Process中的"kill"和"CloseMainWindow"的区别。
  windowMainWindow:  当我们打开的Process是一个有界面的应用程序时,推荐使用此方法,它相当于点击了应用程序的关闭按钮,是一个有序的
                                  终止应用程序的操作,而不像kill那么暴力。  
  kill:                         根据这个单词估计大家都知道啥意思吧,它的作用就是强制关闭我们打开的Process,往往会造成就是我们数据的丢失,所以
                                 说在万不得已的情况下不要使用kill,当然在无图形界面的应用程序中,kill是唯一能够结束Process的一个策略。
 
<3> 进程操作的一个演示
  1    public class ProgessHelper
  2     {
  3         //主操作流程
  4         public static void MainProcess()
  5         {
  6             ProgessHelper helper = new ProgessHelper();
  7
  8             var result = helper.GetProcess();
  9
 10             helper.ShowProcess(result.Take(10).ToArray());
 11
 12             Console.Write("\n请输入您要查看的进程:");
 13
 14             helper.ShowProcessSingle(Console.ReadLine());
 15
 16             Console.Write("\n请输入您要开启的程序:\t");
 17
 18             var name = helper.StartProcess(Console.ReadLine());
 19
 20
 21             Console.WriteLine("程序已经开启,是否关闭?(0,1)");
 22
 23             if (Console.ReadLine() == "1")
 24             {
 25                 helper.StopProcess(name);
 26
 27                 Console.WriteLine("关闭成功。");
 28             }
 29         }
 30
 31         #region 获取进程
 32         /// <summary>
 33 /// 获取进程
 34 /// </summary>
 35 /// <param name="ip"></param>
 36 /// <returns></returns>
 37         public Process[] GetProcess(string ip = "")
 38         {
 39             if (string.IsNullOrEmpty(ip))
 40                 return Process.GetProcesses();
 41
 42             return Process.GetProcesses(ip);
 43         }
 44         #endregion
 45
 46         #region 查看进程
 47         /// <summary>
 48 /// 查看进程
 49 /// </summary>
 50 /// <param name="process"></param>
 51         public void ShowProcess(Process[] process)
 52         {
 53             Console.WriteLine("进程ID\t进程名称\t物理内存\t\t启动时间\t文件名");
 54
 55             foreach (var p in process)
 56             {
 57                 try
 58                 {
 59                     Console.WriteLine("{0}\t{1}\t{2}M\t\t{3}\t{4}", p.Id, p.ProcessName.Trim(), p.WorkingSet64 / 1024.0f / 1024.0f,
 60                                                                          p.StartTime,
补充:软件开发 , C# ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,