C#之线程和进程
1.Directory操作文件夹
CreateDirectory 创建文件夹
Delete 删除文件夹
Move 剪切文件夹
Exist 判断是否存在
GetFiles 获得指定的目录下所有文件的全路径
GetDirectory 获得指定目录下所有文件夹的全路径
2.进程和线程的关系
(1)一个进程包含了多个线程。
(2)为什么常用多线程而不用单线程?
因为单线程容易造成程序的假死。
3.前台线程和后台线程
前台线程:只有所有的前台线程都关闭才能完成程序关闭;
后台线程:只要所有的前台线程结束,后台线程自动结束。
4.为什么要用多线程
①让计算机“同时”做多件事情,节约时间;
②多线程可以让一个程序“同时”处理多个事情;
③后台运行程序,提高程序的运行效率,也不会让主界面出现无响应的情况;
④获得当前线程和当前进程。
产生一个线程的4步骤:
①编写产生线程所要执行的方法。
②引用System.Threading命名空间。
③实例化Thread类,并传入一个指向线程所要运行方法的委托。(这时候这个线程已经产生,但是还没有运行)。
④调用Thread实例的Start方法,标记该线程可以被CPU执行了,但具体执行时间由CPU决定。
5.跨线程
在.Net下,是不允许进行跨线程的访问的。
6.线程传参
如果线程执行的方法需要参数,那么要求这个参数必须是object类型。
private void button1_Click(object sender, EventArgs e)
{
Thread th = new Thread(Test);
th.IsBackground = true;
th.Start("123");//在这里传参
}
private void Test(object s)//线程传参只能穿object
{
for (int i = 0; i < 100000; i++)
{
Console.WriteLine(i);
}
}
7.Socket网络编程
(1)socket的英文原义是"孔"或"插座"。作为进程通信机制,取后一种意思。通常也称作“套接字",用于描述IP地址和端口,是一个通信链的句柄。(其实就是两个程序通信用的。)
(2)socket非常类似于电话插座。以一个电话网为例。电话的通话双方相当于相互通信的2个程序,电话号码就是IP地址。任何用户在通话之前,首先要占有一部电话机,相当于申请一个socket:同时要知道对方的号码,相当于对方有一个固定的socket。然后向对方拨号呼叫,相当于发出连接请求。对方假如在场并空闲,拿起电话话筒,双方就可以正式通话,相当于连接成功。双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向socket发送数据和从socket接收数据。通话结束后,一方挂起电话机相当于关闭socket,撤消连接。
(3)客户端通过IP地址访问服务器某一个端口的过程称为Socket网络编程通信。
(4)TCP协议的三次握手
TCP协议的特点:安全、稳定、但是效率低。
(5)UDP协议
UDP协议的特点:快速、效率高、但是不稳定、容易发生数据丢失。
当客户端发信息的时候,服务器很忙,没有办法处理客户端发过来的信息,就容易造成数据丢失。
(6)端口号
我们一般是使用50000以后的端口号。