2010-08-20 31 views

Trả lời

13

Vâng, đó là cơ bản giống như một chủ đề, nhưng với chức năng thêm (các sự kiện để thông báo cho bạn về những tiến bộ và khi nó kết thúc) .

Bạn nên sử dụng nó bất cứ khi nào bạn cần thực hiện điều gì đó (ví dụ: tính toán, tệp hoặc đọc/ghi cơ sở dữ liệu, yêu cầu web, v.v.) và bạn không muốn GUI xuất hiện không phản hồi trong khi đang xảy ra:

Lớp BackgroundWorker cho phép bạn chạy một thao tác trên một chuỗi riêng biệt, chuyên dụng. Các hoạt động tốn thời gian như tải xuống và giao dịch cơ sở dữ liệu có thể khiến giao diện người dùng (UI) của bạn có vẻ như đã ngừng phản hồi trong khi chúng đang chạy. Khi bạn muốn một giao diện người dùng đáp ứng và bạn đang phải đối mặt với sự chậm trễ lâu dài liên quan đến các hoạt động như vậy, lớp BackgroundWorker cung cấp một giải pháp thuận tiện.

Đọc How to: Run an Operation in the Background để được giới thiệu.

+0

cảm ơn sir (10x) .. :) – yonan2236

4

Một ví dụ đơn giản:

static void Main(string[] args) 
{ 
    BackgroundWorker worker = new BackgroundWorker(); 
    //DoWork is a delegate, where you can add tasks 
    worker.DoWork += (sender, e) => 
     { 
      //blabla 
     }; 
    worker.DoWork += (sender, e) => 
     { 
      //blabla 
     }; 
    worker.RunWorkerCompleted += (sender, e) => 
     { 
      var IfYouWantTheResult = e.Result; 
      //maybe notify others here 
     }; 
    worker.RunWorkerAsync(); 
    //you can cancel the worker/report its progress by its methods. 
} 

Để biết thêm chi tiết, kiểm tra here

1

Nhân viên nền tảng về cơ bản là một chủ đề có bổ sung mà nó sẽ gọi lại khi hoàn thành và cuộc gọi lại sẽ nằm trong ngữ cảnh của U.I. để bạn có thể cập nhật U.I. khi hoàn thành.

Nếu bạn cần gọi lại đó khi hoàn thành trong ngữ cảnh của U.I. thread - sử dụng nó. Nếu không, bạn chỉ nên sử dụng một chuỗi thường xuyên.

0

đây là mã mẫu của ứng dụng hiển thị thanh tiến trình trong khi tải xuống sth. sử dụng lao động nền

http://devtoolshed.com/content/c-download-file-progress-bar

và đây là một hướng dẫn nhanh chóng về công nhân nền

http://www.dotnetperls.com/backgroundworker

tôi đề nghị bạn sử dụng nó khi bạn có một tiêu thụ hoạt động (tải một tập tin, vv) thời gian và bạn muốn giao diện người dùng hoạt động. đó là một tính năng hữu ích nếu bạn muốn hiển thị tiến trình trên giao diện như hiển thị phần trăm trên nhãn hoặc bạn muốn sử dụng thanh tiến trình.

tôi đặc biệt sử dụng nó với điều khiển thanh tiến trình.

Các vấn đề liên quan