您的位置:首页 > 其它

各种异步操作的实现方式

2011-03-24 01:49 417 查看
总结对比各种异步操作的实现方式

实现异步,主要包含以下几种方法

1) 使用专用线程,方法为:

System.Threading.ThreadStart ts = new System.Threading.ThreadStart(void(object state) target);

System.Threading.Thread th = new System.Threading.Thread(ts);

ts.Start();

调用Start()方法之前,并没有实质性得创建线程资源,而是Start()后才进行创建,此种方式的好处在于能设置线程是前台线程还是后台线程,并且能控制线程的挂起和消亡

2) 使用线程池中的线程
线程是一种比较宝贵的资源,所以使用的时候就要加倍珍惜,线程池中线程在使用完成之后并不是马上销毁,而是回到池中等待下一次的使用,这样就可以较少线程创建的消耗。使用方法如下:

ThreadPool.QueueUserWorkItem(WaitCallback callback)

需要注意的是此种方法使用的均为后台线程

3) 使用异步编程模型 【基于事件的异步模式】

这种方法是MS推荐的使用方法,该模型普遍格式为:

BeginXXX(…IAsyCallBack callback,object asyState);

EndXXX(IAsyState ar);

这种模型的好处上面已经有所阐述

4) 使用BackgroundWorker [很弱]

.Net2.0下提供了BackgroundWorker,使用它可以轻易的完成异步操作,并且它还有一些功能上的加强,比如取消操作

Control类上的异步调用BeginInvoke并没有开辟新的线程完成委托任务,而是让界面控件的所属线程完成委托任务的。看来异步操作就是开辟新线程的说法不一定准确。

http://www.youku.com/playlist_show/id_1803099.html MIT算法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: