C#
狐帝
山不在高,有仙则名;窝不怕破,有狐则灵。
展开
-
C#学习笔记(2):多线程数据交换
C#中可以通过管道流实现多线程之间数据交换。C#的管道氛围服务器端和客户端,二者均可配置为输入/输出/双向。服务器管道流监听客户管道流的连接请求。通常是一个线程间里服务器管道流,另一个线程建立客户管道流。二者建立连接之后,一条位于两个线程之间的管道流就形成了。服务器管道流的使用线程代码示例片段如下: class ServerThread { public Server原创 2012-02-05 15:20:14 · 3963 阅读 · 1 评论 -
C#学习笔记(1):中断被Socket.Accept阻塞的线程
刚刚学习C#,在编写一个网络通讯的程序的时候,遇到了点麻烦。监听代码是放在一个线程中,当在线程中调用Socket.Accept()函数时,倘若这时需要中止该线程,C#似乎没有提供现成的办法,使用了Thread.Abort()和Thread.Interrupt()函数,都没有用。有人说用异步Accept方法避免阻塞,可是用这种方法就得在线程中不停地轮询Socket的状态,会导致CPU负荷增加。还有人原创 2012-02-04 15:07:26 · 18693 阅读 · 6 评论 -
C#学习笔记(3) 中断被NamedPipeServer.WaitForConnection()或NamedPipeClientStream.Connect()阻塞的线程
NamedPipeServer.WaitForConnection()函数的行为真的是很霸道,这个函数工作在阻塞模式,而且是不可中断的,也就是说,一旦调用了服务端管道流对象的这个函数,只要没有客户端与之连接,调用线程就会被一只阻塞下去,没有任何办法可以直接中断这个阻塞!要想从这种阻塞中脱离出来,唯一的办法就是在调用线程中创建一个NamedPipeClientStream对象,然后与这个阻塞了线程的原创 2012-02-06 22:14:37 · 10058 阅读 · 2 评论