快捷搜索:

多线程在Visual C#网络编程中的应用

天极IT资讯短信服务 电脑小技巧
  介绍:细处着手,巧处用功。高手和菜鸟之间的差别就是:高手什么都知道,菜鸟知道一些。电脑小技巧收集最新奇招高招,让你轻松踏上高手之路。  
 


  网络应用程序的一般都会或多或少的使用到线程,甚至可以说,一个功能稍微强大的网络应用程序总会在其中开出或多或少的线程,如果应用程序中开出的线程数目大于二个,那么就可以把这个程序称之为多线程应用程序。那么为什么在网络应用程序总会和线程交缠在一起呢?这是因为网络应用程序在执行的时候,会遇到很多意想不到的问题,其中最常见的是网络阻塞和网络等待等。

  程序在处理这些问题的时候往往需要花费很多的时间,如果不使用线程,则程序在执行时的就会表现出如运行速度慢,执行时间长,容易出现错误、反应迟钝等问题。而如果把这些可能造成大量占用程序执行时间的过程放在线程中处理,就往往能够大大提高应用程序的运行效率和性能和获得更优良的可伸缩性。那么这是否就意味着应该在网络应用程序中广泛的使用线程呢?情况并非如此,线程其实是一把双刃剑,如果不分场合,在不需要使用的地方强行使用就可能会产生许多程序垃圾,或者在程序结束后,由于没有能够销毁创建的进程而导致应用程序挂起等问题。

  所以如果你认为自己编写的代码足够快,那我给你的建议还是别使用线程或多线程。这里要提醒诸位的是如果您对在Windows下的线程和其执行原理和机制还不十分清楚,可以先参阅一下介绍Windows操作系统方面的书籍,它们一般都会对其进行比较详细的阐述。然后再阅读本文。

  一.简介在Visual C#中创建和使用线程:

  Visual C#中使用的线程都是通过自命名空间System.Threading中的Thread类经常实例化完成的。通过Thread类的构造函数来创建可供Visual C#使用的线程,通过Thread中的方法和属性来设定线程属性和控制线程的状态。以下Thread类中的最典型的构造函数语法,在Visual C#中一般使用这个构造函数来创建、初始化Thread实例。

public Thread (
 ThreadStart start
) ;
 

  参数

  start ThreadStart 委托,它将引用此线程开始执行时要调用的方法。

  Thread还提供了其他的构造函数来创建线程,这里就不一一介绍了。表01是Thread类中的一些常用的方法及其简要说明:

方法   说明  
Abort   调用此方法通常会终止线程,但会引起ThreadAbortException类型异常。  
Interrupt   中断处于WaitSleepJoin 线程状态的线程。  
Join   阻塞调用线程,直到某个线程终止时为止。  
ResetAbort   取消当前线程调用的Abor方法。  
Resume   继续已挂起的线程。  
Sleep   当前线程阻塞指定的毫秒数。  
Start   操作系统将当前实例的状态更改为ThreadState.Running。  
Suspend   挂起线程,或者如果线程已挂起,则不起作用。  
              表01:Thread类的常用方法及其说明

  这里要注意的是在.Net中执行一个线程,当线程执行完毕后,一般会自动销毁。如果线程没有自动销毁可通过Thread中的Abort方法来手动销毁,但同样要注意的是如果线程中使用的资源没有完全销毁,Abort方法执行后,也不能保证线程被销毁。在Thread类中还提供了一些属性用以设定和获取创建的Thread实例属性,表02中是Thread类的一些常用属性及其说明:

属性   说明  
CurrentCulture   获取或设置当前线程的区域性。  
CurrentThread   获取当前正在运行的线程。  
IsAlive   获取一个值,该值指示当前线程的执行状态。  
IsBackground   获取或设置一个值,该值指示某个线程是否为后台线程。  
Name   获取或设置线程的名称。  
Priority   获取或设置一个值,该值指示线程的调度优先级。  
ThreadState   获取一个值,该值包含当前线程的状态。  
             表02:Thread类的常用属性及其说明

1

作者:阿虎责任编辑:方舟)

天极新媒体 最酷科技资讯

扫码赢大奖

评论

* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!

您可能还会对下面的文章感兴趣: