2. Streams
2.1. Mã hóa dữ liệu
Streams (Luồng dữ liệu) là sự trừu tượng hóa phương thức truyền dữ
liệu (đọc, ghi) , đối với mỗi loại thiết bị khác nhau và trên các môi trường khác nhau thì sử dụng các loại stream khác nhau để đọc ghi dữ liệu.
Có hai loại Stream quan trọng: NetworkStream và FileStream
Network Stream: Được sử dụng để đọc dữ liệu trên mạng
Có hai cách để sử dụng Stream là “dùng stream đồng bộ” và dùng “stream bất
đồng bộ”. Trong cách dùng đồng bộ thì các luồn (thread) tương ứng của chương
trình sẽ tạm ngưng đến khi ứng dụng hoàn thành việc đọc dữ liệu hoặc có lỗi xảy ra.
Trong cách dùng không đồng bộ thì, các thread sẽ vẫn chạy song song với quá trình truyền dữ liệu, và khi quá trình truyền dữ liệu hoàn tất hay có lỗi xảy ra thì đều có trạng thái tương ứng được trả về.
Ví dụ sử dụng Stream để đọc tập tin: Khởi tạo một đồ án .NET mới và thêm vào:
- Một Form đặt tên là FormIO
- Một File Open Dialog Control với tên là openFileDialog
- Một TextBox với tên là tbResults, chọn thuộc tính Multiline = true
- Hai Button vói tên gọi là btnReadAsync và btnReadSync (btnReadAsync sẽ thực hiện chức năng đọc tập tin theo cơ chế không đồng bộ, btnReadSync sẽ thực hiện chức năng đọc tập tin theo cơ chế đồng bộ)
Khai báo thêm Namespace chứa các lớp Stream
Khai báo các biến sử dụng trong chương trình:
Viết code xử lý cho sự kiện click của Button readAsync
Viết code xử lý cho phương thức fs_StateChanged
Viết code xử lý cho nút lệnh readSync để đọc tập tin theo cơ chế đồng bộ:
Vì đọc dữ liệu đồng bộ nên nó sẽ làm dừng toàn bộ hoạt động của biểu mẫu trong
khi đọc, vì vậy để khắc phục tính trạng này, có thể sử dụng Thread riêng để đọc. Khi sử dụng Thread thì phải khai báo thêm namespace Threading :
Phần code cho sự kiện click của btnReadSync