PDA

View Full Version : Giúp mình xử lý về tốc độ chương trình



xphuonga1
04-06-2009, 02:39
Mình có một vấn đề thế này muốn nhờ các bạn giúp đỡ.
Mình viết một chương trình đọc file. chỉ đơn giản là có 2 button Start và Stop.Khi ấn Start thì bắt đầu đọc.Khi ấn Stop nếu đang đọc thì sẽ dừng lại không đọc nữa-kết thúc luôn.Vấn đề là khi đọc file vì có dung lượng lớn nên thời gian đọc hơi lâu tức là sự kiện Start_click() vẫn đang được thực hiện nên mình không thể click được nút Stop hoặc làm bất cứ việc gì khác với chương trình mà chỉ có thể đợi cho đọc xong. Các bạn giúp mình khắc phục vấn đề này nhé. Mình rất cần. Cảm ơn các bạn rất nhiều

trinhdiep
04-06-2009, 04:56
dùng BackgroundWorker chứ

xphuonga1
04-06-2009, 12:01
dùng BackgroundWorker chứ

Bạn chỉ rõ cho mình được không? Cảm ơn nhiều

trinhdiep
04-06-2009, 17:44
Tạo biến toàn cục kiểu BackgroundWorker ;
new BackgroundWorker gọi ở formLoaded hoặc formInit
set WorkerSupportsCancellation =true
với bài của bạn quan tâm tới các hàm
RunWorkerAsync gọi ở Start_click()
CancelAsync gọi ở Stop_click()
event DoWork thực hiện đọc file ở đây.
event ProgressChanged sử dụng nếu cần đưa ra tiến trình đọc file. nếu sử dụng hàm này thì trong hàm thực thi sự kiện DoWork cần gọi hàm ReportProgress ví dụ như mỗi khi bạn đọc được một block chẳng hạn.
ưm. chỉ có vậy thôi. bạn có thể tìm được rất nhiều simple trên net.

[=========> Bổ sung bài viết <=========]

tôi nghĩ chỉ cần nói dùng BackgroundWorker là bạn có thể tìm hiểu được

onlyAnh
07-06-2009, 00:46
Đọc thêm về Thread luôn.
Làm winform là cứ phải dồn dập Thread và Thread :|