为了账号安全,请及时绑定邮箱和手机立即绑定

向背景工作者发送参数?

向背景工作者发送参数?

C#
富国沪深 2019-11-11 10:24:28
假设我想将int参数发送给后台工作者,这如何完成?private void worker_DoWork(object sender, DoWorkEventArgs e) {}我知道什么时候是worker.RunWorkerAsync();,我不明白如何在worker_DoWork中定义它应该采用int参数。
查看完整描述

3 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

您可以这样启动:


int value = 123;

bgw1.RunWorkerAsync(argument: value);  // the int will be boxed

接着


private void worker_DoWork(object sender, DoWorkEventArgs e) 

{

   int value = (int) e.Argument;   // the 'argument' parameter resurfaces here


   ...


   // and to transport a result back to the main thread

   double result = 0.1 * value;

   e.Result = result;

}



// the Completed handler should follow this pattern 

// for Error and (optionally) Cancellation handling

private void worker_Completed(object sender, RunWorkerCompletedEventArgs e) 

{

  // check error, check cancel, then use result

  if (e.Error != null)

  {

     // handle the error

  }

  else if (e.Cancelled)

  {

     // handle cancellation

  }

  else

  {          

      double result = (double) e.Result;

      // use it on the UI thread

  }

  // general cleanup code, runs when there was an error or not.

}


查看完整回答
反对 回复 2019-11-11
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

尽管这是一个已经回答的问题,但我还是会提出另一个选择,即IMO更容易阅读:


BackgroundWorker worker = new BackgroundWorker();

worker.DoWork += (obj, e) => WorkerDoWork(value, text);

worker.RunWorkerAsync();

并在处理程序方法上:


private void WorkerDoWork(int value, string text) {

    ...

}


查看完整回答
反对 回复 2019-11-11
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

您可以像这样传递多个参数。


List<object> arguments = new List<object>();

                    arguments.Add(argument 1);

                    arguments.Add(argument 1);

                    arguments.Add(argument n);



                    backgroundWorker2.RunWorkerAsync(arguments);


private void worker_DoWork(object sender, DoWorkEventArgs e) {


  List<object> genericlist = e.Argument as List<object>;

  extract your multiple arguments from this list and cast them and use them. 


}


查看完整回答
反对 回复 2019-11-11
  • 3 回答
  • 0 关注
  • 274 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信