Mega Code Archive

 
Categories / C# / File Stream
 

Illustrates asynchronous IO

/* Mastering Visual C# .NET by Jason Price, Mike Gunderloy Publisher: Sybex; ISBN: 0782129110 */  /*   Example15_18.cs illustrates asynchronous I/O */ 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();     }   } }