C# 在C中按名称查找backgroundworker对象#

C# 在C中按名称查找backgroundworker对象#,c#,controls,backgroundworker,C#,Controls,Backgroundworker,如何使用backgroundworker的名称查找其对象?对于控件,我可以使用Find根据其名称访问控件: Control Control = this.Controls.Find(ControlName, true)[0]; 后台工作人员和/或计时人员如何?控件。查找无法找到它们。没有办法,只需保留对后台工作人员的引用,没有其他方法 这是不可能的,因为没有跟踪后台工作者或计时器引用的公共对象 您可以自己存储对所有后台工作人员的引用: public static List<Backgro

如何使用backgroundworker的名称查找其对象?对于控件,我可以使用Find根据其名称访问控件:

Control Control = this.Controls.Find(ControlName, true)[0];

后台工作人员和/或计时人员如何?控件。查找无法找到它们。

没有办法,只需保留对后台工作人员的引用,没有其他方法

这是不可能的,因为没有跟踪后台工作者或计时器引用的公共对象

您可以自己存储对所有后台工作人员的引用:

public static List<BackgroundWorkers> Workers {get; set;}

static()
{
    Workers = new List<BackgroundWorkers>();
}
您还可以通过在
字典中存储worker来为每个worker命名


你应该通过使用类成员或类似的方法来跟踪你的后台工作人员和计时器。反射是一个选项。
字典
更适合OP的问题,因为ha可以为每个工作人员分配一个名称(键)。因此,简短的回答是:不存储引用是不可能的。我说得对吗?没有办法像我解释的那样使用控件?是的,不存储引用是不可能的。您可以访问控件,因为framework在内部存储引用并提供对其集合的访问。因此,请将此添加到回答的开头,因为这是对我的问题的直接回答,我会将其标记为答案。:)谢谢,请将
msporek
的回答标记为正确。他已经写了这个。
BackgroundWorker worker = new BackgroundWorker();
Workers.Add(worker);
BackgroundWorker worker = new BackgroundWorker();
Workers.Add("workerName", worker);

BackgroundWorker myWorker = Workers["workerName"];