摘要: 我们将在这里进一步讨论一些.NET类,以及他们在多线程编程中扮演的角色和怎么编程。它们是: System.Threading.ThreadPool 类 System.Threading.Timer 类 如果线程的数目并不是很多,而且你想控制每个线程的细节诸如线程的优先级等,使用Thread是比较合适的;但是如果有大量的线程,考虑使用线程池应该更好一些,它提供了高效的线程管理机制来处理多任务。 对于定期的执行任务Timer类是合适的;使用代表是异步方法调用的首选。System.Threading.ThreadPool Class 当你创建应用程序时,你应该认识到大部分时间你的线程在空闲的等待某些 阅读全文
posted @ 2011-05-18 19:51 孤獨龍 阅读(379) 评论(0) 推荐(0)
摘要: 服务端:using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;Thread mythread ;Socket socket;// 清理所有正在使用的资源。 protected override void Dispose( bool disposing ) { try { socket.Close();//释放资源 mythread.Abort ( ) ;//中止线程 } catch{ } if( disposing ) { if (components != null) { comp 阅读全文
posted @ 2011-05-18 19:48 孤獨龍 阅读(484) 评论(0) 推荐(0)
摘要: C#.net同步异步SOCKET通讯和多线程总结同步套接字通信Socket支持下的网上点对点的通信服务端实现监听连接,客户端实现发送连接请求,建立连接后进行发送和接收数据的功能服务器端建立一个socket,设置好本机的ip和监听的端口与socket进行绑定,开始监听连接请求,当接收到连接请求后,发送确认,同客户端建立连接,开始与客户端进行通信。客户端建立一个socket,设置好服务器端的IP和提供服务的端口,发出连接请求,接收到服务的确认后,尽力连接,开始与服务器进行通信。服务器端和客户端的连接及它们之间的数据传送均采用同步方式。SocketSocket是tcp\ip网络协议接口。内部定义了许 阅读全文
posted @ 2011-05-18 19:47 孤獨龍 阅读(542) 评论(0) 推荐(0)
摘要: 本文的实例程序包括一个列表框、三个按钮。程序使用一个新的线程来运行一个后台处理,结果在列表框中显示。按钮button1启动一个计算平方的线程。按钮button2停止后台处理线程。按钮button3退出程序。程序运行情况如图1所示。使用线程 首先创建运行在新线程上的后台任务。表1所示的代码执行一个相当长的运行处理----一个无限循环。 表1、后台处理程序 private void BackgroundProcess() { int i= 1; while(true) { // 向列表框增加一个项目 listBox1.Items.Add("Iterations: " + i.T 阅读全文
posted @ 2011-05-18 19:45 孤獨龍 阅读(439) 评论(0) 推荐(0)
摘要: C#和.NET基类为开发多线程应用程序所提供的支持。我们将简要介绍Thread和ThreadPool类以及各种线程支持,再用两 介示例来说明线程的规则。然后论述线程同步时会出现的问题。 .如何开始一个线程 .提供线程的优先级 .通过同步控制对对象的访问 1、线程是程序中独立的指令流。主要是给应用程序提供了多个执行线程,应用程序可以有任意多个线程。每次创建一个新执行线程时,都需要指定从哪个方法开始执行。应用程序中的第一个线程总是Main()方法,因为第一个线程是由.NET运行库开始执行的,Main()方法是.NET运行库选择的第一个方法。后续的线程由应用程序在内部启动,即应用程序可以选择启动哪个 阅读全文
posted @ 2011-05-18 19:41 孤獨龍 阅读(796) 评论(0) 推荐(0)
摘要: using System;using System.Threading;//我们定义一个被操作的对象的类Cell,在这个类里,有两个方法:ReadFromCell()和WriteToCell。//消费者线程将调用ReadFromCell()读取cellContents的内容并且显示出来,生产者进程将调用WriteToCell()方法向cellContents写入数据。public class Cell { int cellContents; // Cell对象里边的内容 bool readerFlag = false; // 状态标志,为true时可以读取,为false则正在写入 public 阅读全文
posted @ 2011-05-18 19:38 孤獨龍 阅读(702) 评论(0) 推荐(0)
摘要: 对于引用类型和非线程安全的资源的同步处理,有四种相关处理:lock关键字,监视器(Monitor), 同步事件和等待句柄, mutex类。 Lock关键字 本人愚钝,在以前编程中遇到lock的问题总是使用lock(this)一锁了之,出问题后翻看MSDN突然发现下面几行字:通常,应避免锁定 public 类型,否则实例将超出代码的控制范围。常见的结构 lock (this)、lock (typeof (MyType)) 和 lock ("myLock") 违反此准则:如果实例可以被公共访问,将出现 lock (this) 问题。如果 MyType 可以被公共访问,将出现 l 阅读全文
posted @ 2011-05-18 19:30 孤獨龍 阅读(400) 评论(0) 推荐(0)
摘要: 方法一: //须添加对System.Web的引用 using System.Web.Security; ... /// <summary> /// SHA1加密字符串 /// </summary> /// <param name="source">源字符串</param> /// <returns>加密后的字符串</returns> public string SHA1(string source) { return FormsAuthentication.HashPasswordForStoringI 阅读全文
posted @ 2011-05-18 00:24 孤獨龍 阅读(348) 评论(0) 推荐(0)
摘要: 验证Email格式的主要代码如下:public bool IsEmail(string str_Email){ return Regex.IsMatch(str_Email, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9] {1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\)?]$");}验证IP地址格式的主要代码如下:public bool IPCheck(string IP){ string num = "(25[0-5]|2[0-4]\\d|[0-1]\\d{ 阅读全文
posted @ 2011-05-17 22:35 孤獨龍 阅读(819) 评论(0) 推荐(0)
摘要: 在C#编程中,要获取主机名和主机IP地址,是比较容易的.它提供的Dns类,可以轻松的取得主机名和IP地址.示例:string strHostName = Dns.GetHostName(); //得到本机的主机名IPHostEntry ipEntry = Dns.GetHostByName(strHostName); //取得本机IPstring strAddr = ipEntry.AddressList[0].ToString(); //假设本地主机为单网卡在这段代码中使用了两个类,一个是Dns类,另一个为IPHostEntry类,二者都存在于命名空间System.Net中.Dns类主要是从 阅读全文
posted @ 2011-05-17 21:21 孤獨龍 阅读(725) 评论(0) 推荐(0)