CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 368

368
Chương 9: File, thư mục, và I/O

// Bộ đệm chứa dữ liệu.

private byte[] buffer;

public AsyncProcessor(string fileName) {

buffer = new byte[bufferSize];

// Mở file, truyền giá trị true để hỗ trợ truy xuất bất đồng bộ.

inputStream = new FileStream(fileName, FileMode.Open,

FileAccess.Read, FileShare.Read, bufferSize, true);

}

public void StartProcess() {

// Bắt đầu quá trình đọc bất đồng bộ.

inputStream.BeginRead(buffer, 0, buffer.Length,

new AsyncCallback(OnCompletedRead), null);

}

private void OnCompletedRead(IAsyncResult asyncResult) {

// Một khối đã được đọc. Truy xuất dữ liệu.

int bytesRead = inputStream.EndRead(asyncResult);

// Nếu không đọc được byte nào, stream đang ở cuối file.

if (bytesRead > 0) {

// Tạm dừng để giả lập việc xử lý dữ liệu.

Console.WriteLine("\t[ASYNC READER]: Read one block.");

Thread.Sleep(TimeSpan.FromMilliseconds(20));

// Bắt đầu đọc khối kế tiếp.

inputStream.BeginRead(buffer, 0, buffer.Length,

new AsyncCallback(OnCompletedRead), null);

}else {