C# 如何传递列表<&燃气轮机;列表列表<&燃气轮机;给背景工作者?

C# 如何传递列表<&燃气轮机;列表列表<&燃气轮机;给背景工作者?,c#,list,parameters,backgroundworker,empty-list,C#,List,Parameters,Backgroundworker,Empty List,我有一个后台工作人员正在处理两个列表。我需要把名单传给工人。结果是空列表 用于传递列表(和2个其他参数)的代码。在我的测试中,每个列表都有20多个项目,而列表项目显示,就在调用之前,20多个项目完好无损。在检查员中,他们说“计数”,然后是物品的数量 List<Object> arguments = new List<object>(); // Add arguments to pass to background worker arguments.Add(manager

我有一个后台工作人员正在处理两个列表。我需要把名单传给工人。结果是空列表

用于传递列表(和2个其他参数)的代码。在我的测试中,每个列表都有20多个项目,而
列表
项目显示,就在调用之前,20多个项目完好无损。在检查员中,他们说“计数”,然后是物品的数量

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

// Add arguments to pass to background worker
arguments.Add(managerSource);
arguments.Add(managerDestination);
arguments.Add(source as List<EntityTypeContainer>);
arguments.Add(destination as List<EntityTypeContainer>);
// Invoke the backgroundWorker
Main.bgWorkerCopyEntityTypes.RunWorkerAsync(arguments);
List参数=新列表();
//添加要传递给后台工作程序的参数
arguments.Add(managerSource);
参数。添加(managerDestination);
添加(源为列表);
添加(目标作为列表);
//调用backgroundWorker
bgWorkerCopyEntityTypes.RunWorkerAsync(参数);
我已经调试了后台工作人员的工作方法。在收到arguments参数时,它们已为“空”。空是指参数
列表中的条目显示为“Count 0”。如果我将它们移动到cast变量中,它们仍然是0。我已经在下面列出了代码,但是一旦调用该方法,问题就会显现出来

   private void bgWorkerCopyEntityTypes_DoWork(object sender, DoWorkEventArgs e)
    {
        List<object> arguments = (List<object>)e.Argument;
        RemoteManager managerSource = (RemoteManager)arguments[0];
        RemoteManager managerDestination = (RemoteManager)arguments[1];
        List<EntityTypeContainer> source = (List<EntityTypeContainer>)arguments[2];
        List<EntityTypeContainer> destination = (List<EntityTypeContainer>)arguments[3];
private void bgWorkerCopyEntityTypes\u DoWork(对象发送方,DoWorkEventTargets e)
{
列表参数=(列表)e.参数;
RemoteManager Manager源=(RemoteManager)参数[0];
RemoteManager managerDestination=(RemoteManager)参数[1];
列表源=(列表)参数[2];
列表目标=(列表)参数[3];

感谢您的帮助!

为参数创建一个类:

public class BgwArgs
{
    public string ManagerSource { get; set; }
    public string ManagerDestination { get; set; }
    public List<EntityTypeContainer> Source { get; set; }
    public List<EntityTypeContainer> Destination { get; set; }

}
通过它:

Main.bgWorkerCopyEntityTypes.RunWorkerAsync(bgwargs);
然后获得其成员:

private void bgWorkerCopyEntityTypes_DoWork(object sender, DoWorkEventArgs e)
{
    var myArgs = (BgwArgs)e.Argument;
    var managerSource = myArgs.ManagerSource;
    // etc.
}

这解决了我的问题,谢谢。如果有人有任何想法,我仍然有兴趣知道为什么最初的方法不起作用。
private void bgWorkerCopyEntityTypes_DoWork(object sender, DoWorkEventArgs e)
{
    var myArgs = (BgwArgs)e.Argument;
    var managerSource = myArgs.ManagerSource;
    // etc.
}