摘要: AutoResetEvent类,这个类有两个常用的方法,Set(),设置一个信号量,就是设置线程为终止,这样,WaitOne()方法后面的代码才会执行,然后会重置为非终止状态。 只要知道只有先Set()信号,WaitOne()等到信号后才会继续执行。 如果多个线程方法访问相同的AutoResetEvent对象,那么一次Set(),只能释放一个WaitOne(). 可以通过例子理解:http://msdn.microsoft.com/zh-cn/library/system.threading.autoresetevent.aspx 下面是MSDN的例子:http://msdn.mic... 阅读全文
posted @ 2012-05-31 22:00 大数据工程师康爸 阅读(3375) 评论(0) 推荐(0)
摘要: 普通程序员的日代码量约30行,剩下的大多数时间都在调试。下面介绍一些有用的调试技巧。1、使用调试器 断点:在某行最左端点击或按F9就会加一个断点,程序会在断点处停下。 监视窗口:启动调试以后,选择 “调试" 菜单的 "窗口"菜单,随便选择一个监视窗口,然后就可以在编辑窗口中添加你要监视的变量,调试时查看它们的值。可以把变量或表达式拖入编辑窗口。 即时窗口:"调试"菜单--“窗口"---”即时",这个可以在非调试下执行,可以计算表达式、执行语句。输入变量名,回车就显示当前值。输入 > ,再输入命令,就会执行,如输入 &g 阅读全文
posted @ 2012-05-31 16:37 大数据工程师康爸 阅读(3925) 评论(0) 推荐(0)
摘要: 上个星期,特别想写一个点对点聊天的小程序,就上网查了一下有关C#网络编程的知识,用到最多的就是TcpClient和TcpListener,使用这两个类就可以完成主机之间的通信,当然,做这个程序的过程中也用到了多线程和事件与委托,这是我第一次将这些高级特性加入到程序中,通过参考《C#和.net 3.0第一步》,我学会了如何使用事件,然后照个上面的例子写出了这个多人聊天程序。 定义一个客户端类:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Thr... 阅读全文
posted @ 2012-05-30 16:54 大数据工程师康爸 阅读(11832) 评论(8) 推荐(1)
摘要: 当用户点击窗体右上角的叉时,有时候程序并没有实际退出。那么如何让程序结束呢? 找到窗体的FormClosing事件,在事件处理方法中添加this.close();然后程序就会自行清理资源,关闭程序; 如果写Application.Exit();仅仅是终止了消息泵,但是并不强制退出。 阅读全文
posted @ 2012-05-30 11:04 大数据工程师康爸 阅读(211) 评论(0) 推荐(0)
摘要: 今天打开昨天做的一个vs项目时,提示:上次加载该解决方案,打开关联文档时遇到错误。为了避免该错误,这次解决方案加载将跳过文档加载。 然后我一双击窗体对应的文件就提示 :需要调试。 网上的解决方案是:开始->所有程序->Microsoft Visual Stdio 2005->Visual Stdio Tools->Visual Stdio 2005 命令提示 这时会弹出一个命令行对话框, 输入cd..退到上一级目录, 然后 cd Common7\IDE 进入该目录后再输入devenv.exe /setup /resetuserdata /resetsettings重新初 阅读全文
posted @ 2012-05-28 09:22 大数据工程师康爸 阅读(1175) 评论(0) 推荐(0)
摘要: 今晚写一个聊天客户端的程序,花了很长时间设计界面,然后在我定义P2PClient类的时候用到了类TcpClient,这是一个有关收发数据的类,但是我定义项目名的时候用了TcpClient,这样在我使用类TcpClient时,vs就总是提示错误,后来在给项目重命名TCPClient,还修改项目属性中的默认命名空间和程序集名,但是仍旧报错,这是因为还有一些隐藏的地方没有修改过来,下面是修改方法。 双击主窗体,在源代码中修改命名空间为TCPClient,将对应的..Designer.cs文件中的命名空间改名为TCPClient. 源文件Program.cs中的命名空间也要修改为TCPClie... 阅读全文
posted @ 2012-05-27 21:17 大数据工程师康爸 阅读(6898) 评论(0) 推荐(0)
摘要: 1 (1)事件,其实是一个消息.(2)如果我们自己定义事件,就必须同时定义好这个事件使用的委托,然后书写委托调用的方法。 阅读全文
posted @ 2012-05-25 17:01 大数据工程师康爸 阅读(230) 评论(0) 推荐(0)
摘要: 1 Debug类(1)提供一组帮助调试代码的方法和属性。(2)Debug.Listeners 属性 获取监视调试输出的侦听器集合.Listeners 集合被 Debug 和 Trace 类共用;向任何一个类添加元素侦听器将会向两者同时添加。/* Create a listener that outputs to the console screen, and * add it to the debug listeners. */ TextWriterTraceListener myWriter = new TextWriterTraceListener(System.Console... 阅读全文
posted @ 2012-05-25 09:14 大数据工程师康爸 阅读(1820) 评论(0) 推荐(0)
摘要: 首先我简单介绍一下同步TCP编程 与异步TCP编程。 1 (1)同步:在服务端我们通常用一个TcpListener来监听一个IP和端口。客户端来一个请求的连接,在服务端可以用同步的方式来接收,也可以用异步的方式去接收。比如:TcpListene server = new TcpListener(IPAddress.Parse("127.0.0.1"), port);TcpClient tc =server.AcceptTcpClient(); 这里就一个同步接收的方式,那为什么说同步呢,因为在这个端口下如果同是来了两个客户端请求,第一个连接得到响应,与服务端建立通讯,而第二 阅读全文
posted @ 2012-05-24 17:18 大数据工程师康爸 阅读(14155) 评论(0) 推荐(0)
摘要: 1 TcpClient类(1)TcpClient类为 TCP 网络服务提供客户端连接。(2)构造函数:TcpClient();初始化 TcpClient 类的新实例。构造函数TcpClient(AddressFamily)使用指定的族初始化 TcpClient 类的新实例。AddressFamily枚举 成员指定 Socket 用来解析地址的寻址方案。例如,InterNetwork 指示当 Socket 连接到结束点时,需要一个 IP 版本 4 地址。(3)方法Connect(IPAddress, Int32),使用指定的 IP 地址和端口号将客户端连接到 TCP 主机。(4)方法GetStr 阅读全文
posted @ 2012-05-24 15:48 大数据工程师康爸 阅读(465) 评论(0) 推荐(0)