C# 如何传递列表<&燃气轮机;列表列表<&燃气轮机;给背景工作者?
我有一个后台工作人员正在处理两个列表。我需要把名单传给工人。结果是空列表 用于传递列表(和2个其他参数)的代码。在我的测试中,每个列表都有20多个项目,而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
列表
项目显示,就在调用之前,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.
}