Đối tượng BackgroundWorker cho phép chúng ta chuyển một đối số duy nhất vào DoWorkEventHandler.Thay thế cho BackgroundWorker chấp nhận nhiều hơn một đối số?
// setup/init:
BackgroundWorker endCallWorker = new BackgroundWorker();
endCallWorker.DoWork += new DoWorkEventHandler(EndCallWorker_DoWork);
...
endCallWorker.RunWorkerAsync(userName);
// the handler:
private void EndCallWorker_DoWork(object sender, DoWorkEventArgs e)
{
string userName = e.Argument as string;
...
}
Để vượt qua nhiều đối số, tôi phải bọc chúng trong một đối tượng, như mảng chuỗi nghèo này:
// setup/init:
BackgroundWorker startCallWorker = new BackgroundWorker();
startCallWorker.DoWork += new DoWorkEventHandler(StartCallWorker_DoWork);
...
startCallWorker.RunWorkerAsync(new string[]{userName, targetNumber});
// the handler:
private void StartCallWorker_DoWork(object sender, DoWorkEventArgs e)
{
string[] args = e.Argument as string[];
string userName = args[0];
string targetNumber = args[1];
}
Có một đối tượng hoặc mô hình cho phép chúng ta vượt qua nhiều đối số độc đáo, hoặc lý tưởng, viết chữ ký của riêng mình?
bạn có thể xây dựng trên cách làm việc này? (đặc biệt là "(s, e)" ... tại sao chúng được khai báo?) –
Tôi thích điều này rất nhiều - Đối với trường hợp sử dụng của tôi, nó hoạt động tốt, nhưng các ứng dụng phức tạp hơn có thể có vấn đề, tức là tôi cần truy cập vào tham số giá trị (tên người dùng và targetNumber) tại thiết lập/init. –
Vui mừng được trợ giúp (và một số văn bản khác). –