2014-12-24 4 views
2

Как найти объект backgroundworker с его именем? Для управления можно использовать Найти, чтобы получить доступ к управлению на основе его имени:Поиск объекта backgroundworker по его названию в C#

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

Как насчет backgroundworkers и/или таймеры? Controls.Find не может их найти.

+1

Вы должны просто следить за своими работниками фонового рисунка и таймеры с использованием членов класса или тому подобное. – itsme86

+0

Отражение - это вариант. –

ответ

3

Это невозможно, потому что нет публичного объекта, который отслеживает ссылки на фоновых работников или таймеров.

Вы можете хранить ссылки на все фоновые рабочие сами:

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

static() 
{ 
    Workers = new List<BackgroundWorkers>(); 
} 

Сохранить ссылку на работника при создании один:

BackgroundWorker worker = new BackgroundWorker(); 
Workers.Add(worker); 

Вы также можете дать имя каждому работнику хранения рабочих в Dictionary<string, BackgroundWorker>

BackgroundWorker worker = new BackgroundWorker(); 
Workers.Add("workerName", worker); 

BackgroundWorker myWorker = Workers["workerName"]; 
+1

«Словарь» лучше подходит для проблемы OP, потому что ha может назначить имя (ключ) каждому работнику. – xxbbcc

+0

Итак, короткий ответ: невозможно без хранения ссылок. Я прав? Нет способа сделать то же самое, что я объяснил с помощью элементов управления? – NESHOM

+0

Да, это невозможно без хранения ссылок. Вы можете обращаться к элементам управления, потому что структура хранит ссылки внутри и предоставляет вам доступ к ее коллекции. – opewix

2

Нет никакого способа сделать это, просто держите ссылку на своих BackgroundWorkers, нет другого пути.

+0

Благодарим вас за ответ – NESHOM

Смежные вопросы