NỘI DUNGKhái niệm Lập trình bất đồng bộ 1 BackgroundWorker component 2 Thực thi tiến trình hậu cảnh 3... Khái niệm Lập trình bất đồng bộ Sử dụng lập trình bất đồng bộ có thể thực thi cá
Trang 1LẬP TRÌNH BẤT ĐỒNG BỘ SỬ DỤNG
BACKGROUNDWORKER
Trang 2NỘI DUNG
Khái niệm Lập trình bất đồng bộ
1
BackgroundWorker component
2
Thực thi tiến trình hậu cảnh
3
Trang 3Khái niệm Lập trình bất đồng bộ
Sử dụng lập trình bất đồng bộ có thể thực thi các tác này một cách đồng bộ giúp
cho giao diện vẫn đáp ứng người dùng trong khi thao tác vẫn thực thi
Điều gì sẽ xảy ra khi một ứng dụng thực thi các tác vụ tiêu tốn thời gian(ví dụ:
download file, thực hiện các phép toán phức tạp,…) Nó có thể làm cho giao diện bị “ Not Responding “
Trang 4 BackgroundWorker component được thiết kế cho phép thực thi các tiến trình hậu cảnh riêng biệt,
có các đặc điểm sau:
Cho phép thực thi tác vụ bất đồng bộ trong khi giao diện người dùng vẫn đáp ứng
Xử lý sau khi tiến trình kết thúc thực hiện
Cho phép ngưng việc thực hiện của tiến trình
Biết được tiến độ của tiến trình
Biết được trạng thái của tiến trình đang thực hiện
BackgroundWorker component
Trang 5 Phương thức quan trọng nhất của BackgroundWorker component là phương thức
RunWorkerAsync Khi phương thức này được gọi, BackgroundWorker phát sinh sự kiện DoWork
BackgroundWorker component
Trang 6 Từ Toolbox, kéo BackgroundWorker component thả lên form.
Trong thanh component tray, nhấp đôi vào BackgroundWorker component để tạo bộ xử lý sự kiện
DoWork và cung cấp mã xử lý tiêu tốn thời gian
Để khởi động thao tác tiêu tốn thời gian, gọi phương thức RunWorkerAsync()
Lập trình cho sự kiện DoWork:
Private void backgroundworker1_DoWork() {
//Các lệnh thực hiện }
Thực thi tiến trình hậu cảnh
Trang 7 Gọi thực hiện tiến trình:
BackgroundWorker1.RunWorkerAsync();
Cung cấp thông tin cho tiến trình hậu cảnh:
Thêm tham số vào RunWorkerAsync()
Truy xuất tham số từ thuộc tính DoWorkEventArgs.Argument
Thông báo kết thúc tiến trình hậu cảnh:
Khi tiến trình hậu cảnh kết thúc, để thông báo tiến trình kết thúc hay bị hủy, sự kiện
RunWorkerCompleted được phát sinh
Thực thi tiến trình hậu cảnh
Trang 8 Trả về kết quả từ tiến trình hậu cảnh:
Lập trình viên có thể trả về các giá trị bằng cách thiết lập thuộc tính Result của
DoWorkerEventArgs Giá trị này sẽ được truy xuất trong thuộc tính Result của
RunWorkerCompletedEventAgrs
Hủy một tiến trình hậu cảnh:
Thiết lập thuộc tính WorkerSupportsCancellation thành True
Tạo một phương thức sẽ được gọi để hủy các thao tác hậu cảnh Gọi phương thức
CancelAsync()
Thực thi tiến trình hậu cảnh
Trang 9 Trong sự kiện DoWork, truy vấn thuộc tính CancellationPending và sử dụng hủy tiến trình nếu giá trị này là True Chú ý cũng nên thiết lập DoWorkEventArgs.Cancel thành True
Thông báo tiến độ của tiến trình hậu cảnh:
Thiết lập thuộc tính WorkerReportsProgress thành True
Thông báo tiến độ của tiến trình hậu cảnh bằng cách gọi phương thức ReportProgress Phương thức này phát sinh sự kiện ProgressChanged
Thực thi tiến trình hậu cảnh
Trang 10 Truy xuất trạng thái tiến trình hậu cảnh:
Thuộc tính IsBusy trả về giá trị luận lý:
Nếu là True, thì BackgroundWorker component đang thực thi tiến trình hậu cảnh
Nếu là False, thì BackgroundWorker component đang rảnh
Thực thi tiến trình hậu cảnh
Trang 11Click to edit company slogan
Cảm ơn các bạn đã theo dõi !