异步编程模型(APM,Asynchronous Programming Model)
优点:
1. 将资源使用率降低,因为如果是同步的话,会发生阻塞而导致在线程池中启动多个线程,而CLR线程占用资源是很多的。
2. 因为减少了线程,从而也减少了上下文的切换。
3. 垃圾回收器的速度加快,因为,每次垃圾回收都会将进程内的所有线程挂起,线程变少,挂起和恢复的就快,垃圾回收器查找线程的栈的速度也会加快。
4. 加快调试速度。
5. 加快程序运行速度。
6. 保持GUI程序的很好的可响应性。
支持APM的主要类:
Stream
Dns
Socket
WebRequest
SerialPort
SqlCommand
所有委托类型。
BeginXxx方法和对应的同步方法的前面的参数是一致的,只是多了2个参数
useCallback和stateObject
useCallback是一个委托,定义如下
public delegate void AsyncCallback(IAsyncResult ar);
在回调方法中可以查询IAsyncResult的AsyncResult属性来访问objectState。
EndXxx方法返回和调用同步方法一样的结果。
优点:
1. 将资源使用率降低,因为如果是同步的话,会发生阻塞而导致在线程池中启动多个线程,而CLR线程占用资源是很多的。
2. 因为减少了线程,从而也减少了上下文的切换。
3. 垃圾回收器的速度加快,因为,每次垃圾回收都会将进程内的所有线程挂起,线程变少,挂起和恢复的就快,垃圾回收器查找线程的栈的速度也会加快。
4. 加快调试速度。
5. 加快程序运行速度。
6. 保持GUI程序的很好的可响应性。
支持APM的主要类:
Stream
Dns
Socket
WebRequest
SerialPort
SqlCommand
所有委托类型。
BeginXxx方法和对应的同步方法的前面的参数是一致的,只是多了2个参数
useCallback和stateObject
useCallback是一个委托,定义如下
public delegate void AsyncCallback(IAsyncResult ar);
在回调方法中可以查询IAsyncResult的AsyncResult属性来访问objectState。
EndXxx方法返回和调用同步方法一样的结果。