网络编程(1)进程和线程

     进程是对一段静态指令序列(程序)的动态执行过程,是系统进行资源分配和调度的一个基本单位。同一个进程是可以划分为若干个独立的执行流,也称之为线程。

     线程是CPU调度和分配的基本单位。在Windows环境下,用户可以同时运行多个应用程序,执行的应用程序就是一个进程。例如一台电脑上同时打开两个QQ时,每个运行的QQ就是一个进程;而用一个QQ和多个人聊天时,每个聊天窗口就是一个线程。
     在C/S模式下,服务器需要不断监听来自各个客户端的请求,这时,如果采用单线程机制的话,服务器将无法处理其他事情,因为这个线程要不断的循环监听请求而无法对其他请求做出响应。实际上,当要花费大量时间进行连续的操作时,或者等待网络或其他I/O设备响应时,都可以使用多线程技术。
    在C#中,用于处理进程和线程的类是:Process类和Thread类。


1.Process类
    Process类位于System.Diagnostics命名空间下,用于完成进程的相关处理任务,以及对进程进行管理、我们在在本地机器上可对线程进行启动、停止、查询操作:

启动进程:

 

Process.Start("notepad.exe");

 Process.Start()重载方法如下:

           1.Start(ProcessStartInfo) 启动由包含进程启动信息(例如,要启动的进程的文件名)的参数指定的进程资源,并将该资源与新的 Process 组件关联。

           2.Start(String, String) 通过指定应用程序的名称和一组命令行参数来启动一个进程资源,并将该资源与新的 Process 组件相关联。

           3.Start(String, String, SecureString, String) 通过指定应用程序的名称用户名密码和域来启动一个进程资源,并将该资源与新的 Process 组件关联起来。

           4.Start(String, String, String, SecureString, String) 通过指定应用程序的名称、一组命令行参数、用户名、密码和域来启动一个进程资源,并将该资源与新的 Process 组件关联起来。

 获取进程:

代码
//获取本地所有进程并输出
Process[] process;
process
= Process.GetProcesses();
foreach (var item in process)
{
Console.WriteLine(item.ProcessName);
}

 

 停止进程:

代码
//停止线程
Process[] process;
process
= Process.GetProcessesByNam("ProcessesName");
foreach (var item in process)
{
item.WaitForExit(
1000); //终止线程前等待的毫秒数
item.Close();//释放与此组建关联的所有资源
item.CloseMainWindow();//关闭拥有用户界面的进程
}

 

 

 2.Thread

    位于System.Threading命名空间下,Thread是用于创建和控制线程的一个。对线程的常用操作有:启动线程、终止线程、合并线程和让线程休眠等。

原文地址:https://www.cnblogs.com/tanliang/p/1940225.html