各种异步操作的实现方式
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算法
实现异步,主要包含以下几种方法
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算法
相关文章推荐
- 以异步的方式操作TCP/IP套接字——以异步方式实现简单的聊天室
- 队列的基本操作概念及各种实现方式的代码
- ASP.NET的各种异步操作实现详细解析
- 以异步的方式操作TCP/IP套接字——以异步方式实现简单的聊天室
- android 异步方式实现数据加载
- 多线程与异步操作实现的探讨
- js实现伪异步操作
- 各种字符串操作函数的实现
- 【数据结构】用C++实现顺序表的各种操作(包括头删,尾删,插入,逆序,摧毁,清空等等)
- string函数的各种实现方式
- 数据结构-线性表的顺序存储实现及各种操作代码
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- Microsoft .NET Framework 2.0对文件传输协议(FTP)操作(异步上传,下载等)实现汇总2
- C#执行异步操作的几种方式比较和总结
- Android 底部导航各种实现方式总结(欢迎补充)
- 用类封装精灵的操作,并实例化各种精灵对象 精灵的数字序号使用单例模式的数字生成器实现
- DataGridView 实现一列单元格 显示多操作方式
- 细说ASP.NET的各种异步操作
- js 实现图片预加载(js操作 Image对象属性complete ,事件onload 异步加载图片)
- C#异步编程的实现方式(1)——异步委托