先来说说同步和异步操作之间的主要区别:
在同步I/O操作中,方法将一直处于等待状态,直到I/O操作完成。
而在异步I/O操作中,在开始了I/O操作后,程序的方法可以转移去执行其它的操作,这样大大提高了程序执行的效率。
由于Windows是一个多任务的操作系统,在同一时刻系统可能会接受到多个I/O操作请求,要求对磁盘文件执行各种操作。
如果采用同步方式,那么每时每刻最多只能有一个I/O操作在进行,而其它的任务都处于等待状态,系统的利用率将会大为降低。
异步I/O操作则较好地解决了这种性能上的问题。
Stream类支持在同一个流中既可以进行同步读写,也可以进行异步读写。
Stream类是一个抽象类,它为我们提供了BeginRead、BeginWrite、EndReader、EndWrite、Read、Write、Seek等成员方法,协同完成对流的读写操作。
所有这些方法都是虚方法。因此,在我们自己设计Stream类的派生类时,我们在类用于读写的成员方法Read和Write中应该重载这些方法,并同时设计它们同步和异步的执行代码。
BeginRead,EndRead,BeginWrite和EndWrite方法默认为我们提供的是异步读写操作方式,如果你的派生类的Read和Write方法执行同步操作时,
那么程序提供的效率不会很好。只有当它们执行异步操作时,我们才能有效地提高程序的执行效率。
KingKwon