.NET多线程

1、当线程的ThreadState==ThreadState.Stop时,一般就说明线程完成了工作。如果不是这个状态,就继续执行别的工作,或者等待一会,然后再尝试。

2、能够自定义参数个数,并且返回数据。使用委托的异步调用方法和回调。

3、把异步调用的方法定义为一个委托,然后利用BeginInvoke来异步调用,BeginInvoke的第一参数就是执行,第二个是当线程执行完毕后的调用的方法。在线程执行完毕后执行的方法TaskFinished中,我们使用了EndInvoke来取得这个函数的返回值。

4、线程虽然是个好东西,但是也是资源消耗大户,许多时候,我们需要使用多线程,但是又不希望线程的数量过多,这就是线程池的作用。.NET为我们提供了线程的线程池ThreadTool。首先定义一个WaitCallBack委托,WaitCallback的格式是void WaitCallBack(object state),也就是说你的方法必须符合这个格式,接着调用QueueUserWorkItem,将这个任务加入到线程池,当线程池有空闲时,将会调度并运行你的代码。由于每个进程只有一个线程池,所以如果是IIS进程,或者sqlserver的进程中使用线程池,并且需要设置线程池的最大容量的话,会影响到IIS进程或sql进程。

5、WinForm对线程有很严格的要求,除了创建这些控件的线程,其他线程想跨线程访问WinForm上的控件的属性和方法是不允许的。特殊属性可以。

你可能感兴趣的:(多线程,.net)