有没有其他更好的方法将参数传递给backgroundworker runasync?

Und*_*007 0 c# backgroundworker

我是C#的新手,目前正在开展一个需要BackgroundWorkers的项目.我发现BackgroundWorker RunWorkerAsync只需要一个对象作为参数.但是在某些情况下我需要将多个对象传递给RunWorkerAsync方法.

我目前所做的是将所有对象加载到List中,然后将它们作为单个List对象传递,该对象工作正常.但我的问题是,这可以做得更好还是更好?这种方法有什么问题吗?

List<object> data = new List<object>(3);

List.Add(object1);
List.Add(object2);
List.Add(object3);

bwImportData.RunWorkerAsync(data);

private void DoWork(object sender, DoWorkEventArgs e)
{
   List<object> data = e.Arguments a List<object>
   objecttype1 object1 = data[0] as objecttype1;
   objecttype2 object2 = data[0] as objecttype2;
   objecttype3 object2 = data[0] as objecttype3;

   //Do stuff

}
private void RunWorker(object sender, RunWorkerCompletedEventArgs e)
{
   //Do stuff stuff stuff
}
Run Code Online (Sandbox Code Playgroud)

i48*_*486 5

您可以为参数定义结构/类,创建该类型的对象,填充参数,并将其作为对象参数发送.稍后直接从​​对象中使用它们,而不是像在示例中那样复制局部变量var object1 = data[0] as objecttype1;.