/*
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();
}
}
}