noteBook2.16-C#基础第十六天
来源:互联网 发布:网络测试仪怎么用 编辑:程序博客网 时间:2024/05/22 13:05
进程类
计算机中每一个程序都是一个进程,一个进程又由多个线程组成;
单线程带来的问题:程序假死(程序未结束则不能操作下一步)用多线程解决;
在.Net下,不允许跨线程访问;
Process Using System.Threading.Tasks;
Process[] pros=Process.GetProcesses();//获得电脑中正在运行的线程
Process.Start(" ");//用进程方式打开程序calc,mspaint,iexplore,http://www.baidu.com
用进程打开指定文件:
1.Process p=newProcess();
2.ProcessStartInfopsi=new ProcessStartInfo(@"全路径");
3.p.StartInfo=psi;
4.p.Start();
多线程(让一个程序同时处理多个事件)
Thread——>System.Threading
前台线程:所有的前台线程都关闭才能完成程序关闭;
后台线程:所有的前台线程结束,后台线程自动结束;
//创建一个线程执行Test方法
Thread th=newThread(Test);
th.Start();
//这里的th线程在主线程关闭后仍会执行,需要将th设置为后台线程,这样前台线程结束后,th将自动关闭
th.IsBackground=true;
在.Net下,不允许跨线程访问;解决方法:取消主线程对错误线程调用的捕获
Control。CheckIllegalCrossThreadCalls=false;
*多线程可能存在的异常:主线程关了,但是新线程延时关闭了,会报错;
解决方法为FormClosing事件,关闭窗体时判断新线程是否为null,不为空则手动关闭这个线程,th.Abort();那么线程会立即结束。
Thread.Sleep(time);//让线程睡眠相应事件后再启动,单位ms
Thread.CurrentThread;获得当前线程引用
ofd.FileNames;获得我们在文件夹中选择的多个文件的全路径
*如果线程执行的方法中需要参数,那么要求这个参数必须是object类型,传递参数放在th.Start("参数")
Socket(进程通信机制)
用于描述IP地址和端口,是一种通信链的句柄
主机有很多服务,一个服务打开一个Socket,绑定一个端口,不同的端口对应不同的服务(应用程序)
Tcp,UDP
http用80端口,ftp用21端口,smtp用25端口
1.流式Socket:50000
面向连接的Socket,针对面向连接的TCP服务应用,安全效率低
2.数据式Socket(DateGram)
一种无连接的Socket,对应于无连接的UDP服务应用,不安全(丢失数据,顺序混乱),效率高
Socket通信过程:
1.服务器端:
申请一个Socket——绑定到一个IP地址和一个端口——开启侦听,等待接受连接
2.客户端
申请一个Socket——连接服务器(指明IP和端口号)
相关类:IPAddress类(包含了一个IP地址),IPEndPoint类(包含一个IP地址和端口号)
相关方法:
Socket();创建一个Socket
Bind();绑定一个本地的IP和端口号(IPEndPoint)
Listen();让Socket侦听传入的连接尝试,并指定侦听队列容量
Connect();初始化与另一个Socket的连接
Accept();接收连接并返回一个新的Socket
Send();输出数据到Socket
Receive();从Socket中读取数据
Close();关闭Socket,销毁连接
IPAddress.Any;IPAddress.Parse();
- noteBook2.16-C#基础第十六天
- noteBook2.2-C#基础第二天
- noteBook2.4-C#基础第四天
- noteBook2.6-C#基础第六天
- noteBook2.10-C#基础第十天
- noteBook2.12-C#基础第十二天
- noteBook2.3-C#基础第三天
- noteBook2.5-C#基础第五天
- noteBook2.7-C#基础第七天
- noteBook2.8-C#基础第八天
- noteBook2.9-C#基础第九天字符串
- noteBook2.11-C#基础第十一天
- noteBook2.13-C#基础第十三天
- noteBook2.14-C#基础第十四天
- noteBook2.15-C#基础第十五天
- noteBook2.17-C#基础第十七天
- java基础第十六天 IO
- 16 第十六天【健身】
- CF292D Connected Components【并查集】
- jetty+spring+mybatis (三)
- Java集合-TreeSet(一)
- 拦截导弹(规律:下降子序列的个数等于最长上升子序列的长度)
- 用python实现零钱找零的三种方法
- noteBook2.16-C#基础第十六天
- 【慕课网_性能优化之MySQL优化_学习】【08】
- 前端:常见的6种HTML5错误用法
- Error:A problem was found with the configuration of task ':app:packageDebug' 问题解决
- 软件测试-动态白盒测试
- Java常见Lock(一): lock之Condition、ConditionObject、LockSupport
- 使用jquery追加table行
- 【python】python数据结构(六)——排序:插入排序
- 文章标题