- 当我们使用“项目”选项卡添加引用的时候,我们添加的其实是路径,在调用的时候,通过路径去找到这个程序集使用,当我们使用“浏览”选项卡是,就是把浏览到的这个程序集复制到当前程序集下;
- 多线程:
2.1 产生一个线程的4步骤:
2.1.1 编写产生线程所要执行的方法
2.1.2 引用System.Threading命名空间
2.1.3 实例化Thread类,并传入要执行的方法委托,(这时候这个线程还没有开始执行)
2.1.4 调用Thread实例的Start方法,标记该线程可以被cpu执行,但是具体执行的时间由cpu决定。
2.2 方法重入:程序中多个线程同时运行时,就可能发生同一个方法被多个线程同时调用的情况。当这个方法中存在一些非线程安全的代码时,方法重入就会导致数据不一致的情况,这是非常严重的bug;
2.3 前台线程和后台线程:
2.3.1 前台线程:只有所有的前台线程都关闭才能完成程序的关闭
2.3.2 后台线程:只要前台线程结束,后台线程就自动结束;
2.4 带参数的方法的线程调用:创建线程是使用ParameterizedThreadStart 这个委托类来获得带参数的方法,参数在Start中传递;
2.5 不允许跨线程操作:可以跨线程读,但是跨线程写的时候就不允许,这也是程序的保护;这是我们做简单的就是关闭跨线程检查;
- 套接字
3.1 报文式(UDP):数据包套接字的数据发送方式,将数据拆分成好几份,一份一份的发送,但是接受没接受不关心;根据接受到的包,查看是否缺少,根据包里的信息进行排列;(接受的顺序不一定是发送的顺序,发送的数据不一定能顺利到达)速度快,节约资源
3.2 流式(TCP):流式套接字的数据发送方式,首先建立连接,连接建立之后,会先经历TCP协议的三次握手协议来建立连接,发送消息,每次发送都会接受一个回应,如果回应没有收到,那么继续发,知道收到为止;因为连接一直在发送期间保持,所以比较占用资源;
- Socket一般应用模式:
5.Receive方法,这个方法一直通过套接字监听对方发消息,如果关闭了对话框,也就是结束了线程,对方发套接字就断开了,这样就Receive不知道监听谁发消息,就会抛异常,所以我们要对异常捕捉。更多net教程(http://net.itcast.cn/)