C#异步IO演示代码
using System; using System.IO; using System.Windows.Forms; public class Example15_18 { // stream to handle reading private static FileStream inStream; // delegated method to handle callback private static AsyncCallback acb; // allocate a big buffer for reading static byte[] buf = new byte[500000]; // callback to use when read is complete static void OnComplete(IAsyncResult asyncResult) { int bytesRead = inStream.EndRead(asyncResult); Console.Write(bytesRead); Console.WriteLine(" bytes read!"); } [STAThread] public static void Main() { // use an open file dialog to get a filename OpenFileDialog dlgOpen = new OpenFileDialog(); dlgOpen.Title="Select file to read"; if (dlgOpen.ShowDialog() == DialogResult.OK) { // open the file inStream = new FileStream(dlgOpen.FileName, FileMode.Open, FileAccess.Read, FileShare.None, 2048, true); // assign the callback delegate acb = new AsyncCallback(OnComplete); // read asynchronously inStream.BeginRead(buf, 0, 500000, acb, null); // do some work in the meantime for(int i=0; i<10; i++) Console.WriteLine(i); // And wait for the user to quit Console.WriteLine("Press Enter to exit"); int resp = Console.Read(); } } }