一、 线程声明
1、函数内部声明
ThreadListen = new Thread(delegate()
{
this.ShuiYinAdd(i);
});
//ThreadListen.Name = "ThreadServer";
ThreadListen.IsBackground = true;
ThreadListen.Start();
2、声明线程函数
//声明
public void Recv()
{
}
//启动线程,利用函数名作为构造参数
ThreadRecv = new Thread(this.Recv);
ThreadRecv.Name = "ThreadRecv";
ThreadRecv.IsBackground = true;//可以结束线程
ThreadRecv.Start();
3、声明带参数线程函数
//声明,参数必须为object类型
public void Accept(object ObjClient)
{
Client = (TcpClient)ObjClient;
//…
}
//启动线程,用Start传递参数
ThreadAccept = new Thread(new ParameterizedThreadStart(this.Accept));
ThreadAccept.Name = "ThreadAccept";
ThreadAccept.IsBackground = true;//可以结束线程
ThreadAccept.Start(Client);
二、 线程技巧:
1、 在线程间操作控件
在Form()里加上System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;,可以
2、 主窗口结束后,强制结束线程
Thread.IsBackground = true;
3、 线程互斥
Lock
4、 强制退出主进程
Environment.Exit(0);
5、为线程中数值提供原子操作;可取代Lock
Interlocked.Increment(ref Count);