C#线程学习
Thread.IsBackground = true
把线程设为后台线程可以使前台线程(如Main()的线程)结束后,后台线程立即停止,否则这个线程会在执行完以后才停止
Thread.Jion();
在当前线程执行完以后才进入后面的程序,如等待线程被释放
Thread.Abort();
终止线程
ThreadStart(WaitCallBack);
其实就是个委托:public delegate void ThreadStart(),但是用自定义的委托代替不了ThreadStart,只是所有线程代理的函数只能是无参无返回的。
C#中有一种匿名线程的方法,可以方便启动线程,其实应该叫做匿名委托,在MSDN查匿名委托就会有这方面的知识
void SimpeProcess()
{
Thread aThread=new Thread(delegate()
{
//process code
})
aThread.Start();
}
{
Thread aThread=new Thread(delegate()
{
//process code
})
aThread.Start();
}
线程中同步问题:一个线程要写入一变量,同时其他线程读取或写入同一个变量,可使用lock关键字解决,当然lock块内的编码应当越少越好
顺便提一下Lock关键字的实质其实就是Monitor.Enter()和Monitor.Exit()。
Lock
lock(x)
{
}
lock(x)
{
}