c#学习有感(二)
2014-06-23 11:37
295 查看
今天主要学习的是异步编程。首先,了解一下同步方法和异步方法的区别:
同步方法调用在程序继续执行之前需要等待同步方法执行完毕返回结果异步方法则在被调用之后立即返回以便程序在被调用方法完成其任务的同时执行其它操作
APM提供了四种方式供开发人员选择:
1.在调用BeginXxx方法的线程上调用EndXxx方法来得到异步操作的结果,但是这种方式会阻塞调用线程,知道操作完成之后调用线程才继续运行
2.查询IAsyncResult的AsyncWaitHandle属性,从而得到WaitHandle,然后再调用它的WaitOne方法来使一个线程阻塞并等待操作完成再调用EndXxx方法来获得操作的结果。
3.循环查询IAsyncResult的IsComplete属性,操作完成后再调用EndXxx方法来获得操作返回的结果。
4.使用 AsyncCallback委托来指定操作完成时要调用的方法,在操作完成后调用的方法中调用EndXxx操作来获得异步操作的结果。
异步编程模型这个模式,就是微软利用委托和线程池帮助我们实现的一个模式(该模式利用一个线程池线程去执行一个操作,在FileStream类BeginRead方法中就是执行一个读取文件操作,该线程池线程会立即将控制权返回给调用线程,此时线程池线程在后台进行这个异步操作;异步操作完成之后,通过回调函数来获取异步操作返回的结果。此时就是利用委托的机制。所以说异步编程模式时利用委托和线程池线程搞出来的模式,包括后面的基于事件的异步编程和基于任务的异步编程)
注意:只有当async和await关键字同时出现,该方法才被转换为异步方法处理。
HttpClient:
HttpClient是接收HttpResponseMessages和发送HttpRequestMessages的主要类,如果你习惯了使用WebClient或者是HttpWebRequest, 需要注意HttpClient和他们不同的地方:
1、在HttpClient实例上配置扩展,设置默认的头部,取消未完成的请求和更多的设置。
2、你通过一个单一的HttpClient实例,它有自己的连接池。
3、HttpClients不与特定的HTTP服务器绑定,你可以使用相同的HttpClient实例提交任何HTTP请求。
4、你可以用HttpClient为特定的站点创建特殊的Client
5、HttpClient采用新的型模式处理异步请求使它更容易管理和协调更多的请求。
同步方法调用在程序继续执行之前需要等待同步方法执行完毕返回结果异步方法则在被调用之后立即返回以便程序在被调用方法完成其任务的同时执行其它操作
APM提供了四种方式供开发人员选择:
1.在调用BeginXxx方法的线程上调用EndXxx方法来得到异步操作的结果,但是这种方式会阻塞调用线程,知道操作完成之后调用线程才继续运行
2.查询IAsyncResult的AsyncWaitHandle属性,从而得到WaitHandle,然后再调用它的WaitOne方法来使一个线程阻塞并等待操作完成再调用EndXxx方法来获得操作的结果。
3.循环查询IAsyncResult的IsComplete属性,操作完成后再调用EndXxx方法来获得操作返回的结果。
4.使用 AsyncCallback委托来指定操作完成时要调用的方法,在操作完成后调用的方法中调用EndXxx操作来获得异步操作的结果。
异步编程模型这个模式,就是微软利用委托和线程池帮助我们实现的一个模式(该模式利用一个线程池线程去执行一个操作,在FileStream类BeginRead方法中就是执行一个读取文件操作,该线程池线程会立即将控制权返回给调用线程,此时线程池线程在后台进行这个异步操作;异步操作完成之后,通过回调函数来获取异步操作返回的结果。此时就是利用委托的机制。所以说异步编程模式时利用委托和线程池线程搞出来的模式,包括后面的基于事件的异步编程和基于任务的异步编程)
注意:只有当async和await关键字同时出现,该方法才被转换为异步方法处理。
HttpClient:
HttpClient是接收HttpResponseMessages和发送HttpRequestMessages的主要类,如果你习惯了使用WebClient或者是HttpWebRequest, 需要注意HttpClient和他们不同的地方:
1、在HttpClient实例上配置扩展,设置默认的头部,取消未完成的请求和更多的设置。
2、你通过一个单一的HttpClient实例,它有自己的连接池。
3、HttpClients不与特定的HTTP服务器绑定,你可以使用相同的HttpClient实例提交任何HTTP请求。
4、你可以用HttpClient为特定的站点创建特殊的Client
5、HttpClient采用新的型模式处理异步请求使它更容易管理和协调更多的请求。
相关文章推荐
- C#学习有感(Lambda表达式)
- c#学习有感(一)
- C#学习有感(泛型)
- 前几天开始学习C#.Net,我就一个道理:跟着微软走不会错的。。。
- 结合本人学习,总结一些C#和JAVA的不同这处
- 开始学习C#
- Community 学习(C#版)
- C#学习笔记:多态与隐藏,覆盖
- 学习手记--怎样用c#处理xml文档.
- C# 学习技巧积累(不断更新中。。)
- 从今天开始学习书籍C#,Asp.net
- C#学习笔记(四)
- [学习笔记]学C#遇到的几个问题
- 有感于学习
- 不能空着,发篇以前的C++学习笔记,不过现在在学C#
- "HOW TO: Create a Smooth Progress Bar in Visual C# .NET"的学习笔记
- 有感学习
- 2004.7.15 [C#学习记录]使用C#编写一个自定义控件
- C#学习笔记(二)
- C#学习心得