Windows Phone 7手机开发、
.Net培训、期待与您交流!
线程:是程序的一个执行流,每一个线程都有自己专属的寄存器(存储栈指针和程序计数器等),但是代码区是共享的。即不同的线程可以执行同样的函数。
多线程:是只程序中包含多个执行流,即在一个程序可以运行多个不同的线程来执行不同的代码,也就是说润徐单个程序创建多个并行的线程来完成各自的任务。
计算时间:DataeTime beginTime=DateTime.Now;…………TimeSpan ts=beginTime.Subtract(DateTime.Now);
如何实现多线程:
线程肯定也要执行一段代码。所以要产生一个线程,必须先为该线程写一个方法,这个方法中的代码就是该线程运行所要执行的代码。
线程启动时,通过委托调用该方法。(线程启动时,调用传过来的委托,委托就会执行相应的方法,实现线程执行方法。)
产生线程的4步骤:
1.编写产生线程所要执行的方法;2.引用System.Threading命名空间;3.实例化Thread类,并传入一个纸箱线程所要运行方法的委托。(这时这个线程已经产生,但是还没有运行);
4.调用THread示例的Start方法,标记该线程可以被CPU执行了,但是具体执行时间有CPU决定
前台线程:只有所有前台线程都关闭才能完成程序的关闭。
后台线程:只要所有的前台线程结束,后台线程自动结束。
将线程设置为后台线程: threadFirstIsBackground=true;
Tread类的重要成员:Start()启动、About()终止、Tread.Sleep(1)静态方法,可以使当前线程停止一段时间、Name线程名、Thread.CurrentThread获得当前线程引用。
线程执行带参数的方法:
void ShowTxtName(object name)
{
if(name!=null)
MessageBox.Show(...);
else
MessageBox.Show(...);
}
private void btnThreadWithPara_Click(object sender,EventArgs e)
{
//执行参数的方法:
Thread thread=new Thread(showTxtName);
thread.IsBackground=true;
thread.start(TxtName.Text.Trim());
}
执行带多个参数的方法:
void ShowTxtName2(object li)
{
List<string> list=li as List<string>;
if(list!=null)
{
foreach(string s in list)
{
MessageBox.Show(s);
}
}
}
private void bubtnThreadWithParatton1_click(object sender,EventArgs e)
{
Thread thread=new Thread(showTxtName2);
thread.IsBackground=true;
Socket sockeetWatch; //创建服务器负责监听的套接字
private void btnBeginListen_Click(object sender, EventArgs e)
{
//创建服务器负责监听的套接字,参数意义(IP4寻址协议,流式连接,TCP协议传输数据 )
Socket sockeetWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//获得文本框内的IP地址对象
IPAddress address=IPAddress.Parse(txtIP.Text.Trim());
//创建包含Ip和PORT的网络节点对象。
IPEndPoint endpoint=new IPEndPoint(address,int.Parse(txtPort.Text.Trim()));
//将负责监听的套接字绑定到唯一的IP和接口上。
sockeetWatch.Bind(endpoint);
//设置监听队列的长度。一次性处理的个数
sockeetWatch.Listen(10);
//创建富足监听的线程,并传入监听方法。
threadWatch = new Thread(WatchConnecting);
threadWatch.IsBackground = true;//设置为后台
threadWatch.Start();//开启线程
ShowMsg("服务器启动监听成功!");
}
void WatchConnecting()
{
//开始监听客户端请求,注意Accept方法会阻断当前的线程。用多线程解决问题。
Socket solConnection = sockeetWatch.Accept();
ShowMsg("客户端连接成功!");
}
void ShowMsg(string msg)
{
txtMsg.AppendText(msg + "\r\n");
}
套接字-客户端:
private void btnBeginListen_Click(object sender, EventArgs e)
{
IPAddress address = IPAddress.Parse(txtIP.Text.Trim());
IPEndPoint endpoint = new IPEndPoint(address, int.Parse(txtPort.Text.Trim()));
Socket socketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socketClient.Connect(endpoint);
}
socket方法:
相关类:IPAdress:包含了一个IP地址;IPEndPoint:包含了一对IP地主和端口号
方法:Socket()创建一个Socket;Bind()绑定一个本地的IP和端口号;Listen()让Socket监听闯入的连接尝试,并指定鉴定队列容量;Connect()初始化另一个Socket的连接;Accept()接受连接并返回一个姓的socket;Send()输出数据到Socket;Receive()从Socket中读取数据;Close()关闭Socket(销毁连接)
Windows Phone 7手机开发、 .Net培训、期待与您交流!
线程:是程序的一个执行流,每一个线程都有自己专属的寄存器(存储栈指针和程序计数器等),但是代码区是共享的。即不同的线程可以执行同样的函数。
多线程:是只程序中包含多个执行流,即在一个程序可以运行多个不同的线程来执行不同的代码,也就是说润徐单个程序创建多个并行的线程来完成各自的任务。
计算时间:DataeTime beginTime=DateTime.Now;…………TimeSpan ts=beginTime.Subtract(DateTime.Now);
如何实现多线程:
线程肯定也要执行一段代码。所以要产生一个线程,必须先为该线程写一个方法,这个方法中的代码就是该线程运行所要执行的代码。
线程启动时,通过委托调用该方法。(线程启动时,调用传过来的委托,委托就会执行相应的方法,实现线程执行方法。)
产生线程的4步骤:
1.编写产生线程所要执行的方法;2.引用System.Threading命名空间;3.实例化Thread类,并传入一个纸箱线程所要运行方法的委托。(这时这个线程已经产生,但是还没有运行);
4.调用THread示例的Start方法,标记该线程可以被CPU执行了,但是具体执行时间有CPU决定
前台线程:只有所有前台线程都关闭才能完成程序的关闭。
后台线程:只要所有的前台线程结束,后台线程自动结束。
将线程设置为后台线程: threadFirstIsBackground=true;
Tread类的重要成员:Start()启动、About()终止、Tread.Sleep(1)静态方法,可以使当前线程停止一段时间、Name线程名、Thread.CurrentThread获得当前线程引用。
线程执行带参数的方法:
void ShowTxtName(object name)
{
if(name!=null)
MessageBox.Show(...);
else
MessageBox.Show(...);
}
private void btnThreadWithPara_Click(object sender,EventArgs e)
{
//执行参数的方法:
Thread thread=new Thread(showTxtName);
thread.IsBackground=true;
thread.start(TxtName.Text.Trim());
}
执行带多个参数的方法:
void ShowTxtName2(object li)
{
List<string> list=li as List<string>;
if(list!=null)
{
foreach(string s in list)
{
MessageBox.Show(s);
}
}
}
private void bubtnThreadWithParatton1_click(object sender,EventArgs e)
{
Thread thread=new Thread(showTxtName2);
thread.IsBackground=true;
thread.start(new List<string>0{"sdf","esf","awe"});
}
套接字-服务器:
Socket sockeetWatch; //创建服务器负责监听的套接字
private void btnBeginListen_Click(object sender, EventArgs e)
{
//创建服务器负责监听的套接字,参数意义(IP4寻址协议,流式连接,TCP协议传输数据 )
Socket sockeetWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//获得文本框内的IP地址对象
IPAddress address=IPAddress.Parse(txtIP.Text.Trim());
//创建包含Ip和PORT的网络节点对象。
IPEndPoint endpoint=new IPEndPoint(address,int.Parse(txtPort.Text.Trim()));
//将负责监听的套接字绑定到唯一的IP和接口上。
sockeetWatch.Bind(endpoint);
//设置监听队列的长度。一次性处理的个数
sockeetWatch.Listen(10);
//创建富足监听的线程,并传入监听方法。
threadWatch = new Thread(WatchConnecting);
threadWatch.IsBackground = true;//设置为后台
threadWatch.Start();//开启线程
ShowMsg("服务器启动监听成功!");
}
void WatchConnecting()
{
//开始监听客户端请求,注意Accept方法会阻断当前的线程。用多线程解决问题。
Socket solConnection = sockeetWatch.Accept();
ShowMsg("客户端连接成功!");
}
void ShowMsg(string msg)
{
txtMsg.AppendText(msg + "\r\n");
}
套接字-客户端:
private void btnBeginListen_Click(object sender, EventArgs e)
{
IPAddress address = IPAddress.Parse(txtIP.Text.Trim());
IPEndPoint endpoint = new IPEndPoint(address, int.Parse(txtPort.Text.Trim()));
Socket socketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socketClient.Connect(endpoint);
}
socket方法:
相关类:IPAdress:包含了一个IP地址;IPEndPoint:包含了一对IP地主和端口号
方法:Socket()创建一个Socket;Bind()绑定一个本地的IP和端口号;Listen()让Socket监听闯入的连接尝试,并指定鉴定队列容量;Connect()初始化另一个Socket的连接;Accept()接受连接并返回一个姓的socket;Send()输出数据到Socket;Receive()从Socket中读取数据;Close()关闭Socket(销毁连接)
Windows Phone 7手机开发、 .Net培训、期待与您交流!