2011-10-22 38 views
5

Tôi có một số tệp lớn mà tôi đang xử lý và tôi đang sử dụng backgroundWorker1.ReportProgress(percent) để báo cáo tiến trình khi từng tệp được hoàn tất. Nhưng bây giờ tôi muốn có một thanh tiến trình thứ hai để báo cáo tiến độ cho mỗi tệp riêng lẻ khi nó đang được xử lý (và đặt lại cho tệp tiếp theo). Tôi có thể sử dụng vị trí byte hiện tại mà tôi đang đọc và chia cho tổng kích thước của tệp để có được tiến độ tính theo phần trăm. Nhưng làm thế nào để vượt qua giá trị này để progressBar2 nếu chỉ có một sự kiện ProgressChanged?C# Tiến trình báo cáo nền tảng cho 2 thanh tiến trình?

Trả lời

5

Một cách là sử dụng BackgroundWorker.ReportProgress(Int32, Object) và chuyển bất kỳ thứ gì bạn muốn, trong tham số userState.

Một cách khác đơn giản là biết rằng khi bạn đã đạt đến 100% trên thanh tiến trình đầu tiên, bạn cần phải tăng thanh khác.

3

ReportProgress có overload cho phép bạn chuyển một đối tượng thừa. Bạn có thể sử dụng điều này để trả lại bất kỳ trạng thái bổ sung nào bạn cần.

public void ReportProgress(
    int percentProgress, 
    Object userState 
) 

Sau đó, bạn có thể đọc trạng thái từ ProgressChangedEventArgs.UserState.

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