2009-03-25 27 views
6

tôi đang sử dụng người lao động nền để làm một hoạt động tốn kém:tái sử dụng BackgroundWorker nhiều hơn một lần

backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork); 
backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged); 
backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted); 
backgroundWorker1.RunWorkerAsync(inputs); 

Cuối cùng tôi có điều này:

void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
{ 
    Messagebox.Show("Done with expensive operation 1"}; 
} 

bây giờ tôi có một hoạt động tốn kém. Tôi có thể tái sử dụng cùng một nhân viên nền tảng này không. bây giờ tôi muốn callbacks mới như tôi không muốn báo cáo chuyển đổi trên ProgressChanged và DoWork Callback để xác định xem tôi đang làm hoạt động 1 hoặc 2.

Là nó chỉ đơn giản để sử dụng 2 lớp công nhân nền riêng biệt

Trả lời

14

Có, bạn có thể sử dụng lại BackgroundWorker - nhưng bạn chỉ có thể sử dụng nó một lần bất cứ lúc nào - không phải đồng thời. Tuy nhiên, nếu các hoạt động khác nhau, tôi sẽ sử dụng một nhân viên riêng biệt. Nếu không, bạn sẽ phải hủy bỏ các sự kiện, móc các sự kiện chính xác, vv Lộn xộn.

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