Thông thường, khi mới làm quen với C#, kiểu nhập xuất bạn dùng là kiểu xuất nhập đồng bộ (synchronous I/O), nghĩa là trong chương trình, bạn đang đọc hoặc viết thì mọi hoạt động khác đều ngưng lại. Phải nói là đọc dữ liệu hoặc viết dữ liệu đòi hỏi thời gian (tương đối) khá dài, đặc biệt khi chỗ lưu trữ lâu dài là đĩa từ hoặc mạng. | c Co Bản Asynchronous I O Thông thường khi mới làm quen với C kiểu nhập xuất bạn dùng là kiểu xuất nhập đồng bộ synchronous I O nghĩa là trong chương trình bạn đang đọc hoặc viết thì mọi hoạt động khác đều ngưng lại. Phải nói là đọc dữ liệu hoặc viết dữ liệu đòi hỏi thời gian tương đối khá dài đặc biệt khi chỗ lưu trữ lâu dài là đĩa từ hoặc mạng. Với những tập tin đồ sộ hoặc khi đọc viết thông qua mạng thì bạn nên chọn hoạt động theo kiểu bất đồng bộ xuất nhập asynchronous I O cho phép bạn bắt đầu cho đọc rồi quay qua làm chuyện khác trong khi CLR lo hoàn thành yêu cầu đọc của bạn. .Net Framework cung cấp asynchronous I O thông qua các hàm hành sự BeginRead và BeginWrite thuộc lớp Stream. Thứ tự hoạt động như sau bạn cho triệu gọi hàm BeginRead đối với tập tin của bạn rồi quay qua làm việc gì đó không dính d áng cho với việc đọc tập tin kể trên trong khi việc đọc tiếp tục tiến hành trên một thread khác. Khi việc đọc hoàn tất bạn sẽ được thông báo bởi một hàm hành sự callback. Lúc này bạn có thể xử lý dữ liệu vừa mới được đọc vào rồi khởi động lại một việc đọc khác rồi trở qua một việc khác. Ngoài 3 thông số mà bạn dùng trong việc đọc nhị phân buffer di số và bao nhiêu byte phải đọc BeginRead còn đòi hỏi một delegate và một tình trạng đối tượng state object . Delegate là một hàm hành sự callback tùy chọn nếu được cung cấp sẽ được triệu gọi hàm khi dữ liệu được đọc vào xong. Tình trạng đối tượng cũng là tùy chọn. Trong thí dụ này ta trao null đối với tình trạng đối tượng. Tình trang đối tượng được giữ trong những biến thành viên của lớp trắc nghiệm. Bạn tự do đưa bất cứ đối tượng nào bạn muốn vào thông số tình trạng và bạn có thể tìm lại nó khi bạn được gọi lại. Điển hình là bạn cất giấu các trị tình trạng mà bạn sẽ cần tìm trở lại. Thông số tình trạng có thể được sử dụng bởi lập trình viên để cầm giữ tình trạng triệu gọi pause pending running . . Thử chạy từng bước ví dụ dưới đây bạn sẽ hiểu hơn về asynchronous I O trong C chú ý các bạn đổi đường .