c# - 如何将 List<> 的 List<> 传递给后台工作人员?
问题描述
我有一个正在处理两个列表的 backgroundWorker。我需要将列表传递给工人。结果是空列表。
传递列表(和 2 个其他参数)的代码。在我的测试中,每个列表都有 20 多个项目,这些List<>
项目显示 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);
我已经调试了 backgroundWorker 的 DoWork 方法。在接收到 arguments 参数时,它们已经是“空的”。空我的意思是参数中的条目List<>
显示为“计数 0”。如果我将它们移动到强制转换变量中,它们仍然是 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];
任何帮助表示赞赏!
解决方案
为参数创建一个类:
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; }
}
创建该类的实例并填充它:
var bgwargs = new BgwArgs();
bgwargs.ManagerSource = "whatever";
// etc.
交上来:
Main.bgWorkerCopyEntityTypes.RunWorkerAsync(bgwargs);
然后获取其成员:
private void bgWorkerCopyEntityTypes_DoWork(object sender, DoWorkEventArgs e)
{
var myArgs = (BgwArgs)e.Argument;
var managerSource = myArgs.ManagerSource;
// etc.
}
推荐阅读
- python - SQLAlchemy - 从双向关联代理访问属性
- python - 通过分隔符 pandas python 拆分列并仅保留新名称
- python - 在 Python 中创建随机数据矩阵
- javascript - 如何在香草 Ionic 4 中使用离子路由器
- swiftui - 如何在 textview 的 longPressGesture 上添加自定义 menuItem 并在单击时调用该 menuItems 操作?
- image - 图像中手绘逻辑门的分割
- javascript - 禁用公会 Discord JS COMMANDO 上的命令
- terraform - 如何在同一个`main.tf`中多次重用一个模块?
- php - cURL php 显示的结果与 chrome/firefox 不同
- python - 如何检查值是numpy数字还是python原语