Naming BackgroundWorker - PullRequest
       4

Naming BackgroundWorker

23 голосов
/ 16 июля 2010

Я хотел бы иметь возможность назвать BackgroundWorker для облегчения отладки. Возможно ли это?

Ответы [ 4 ]

33 голосов
/ 16 июля 2010

Мне нужно попробовать, но разве вы не можете просто установить Имя потока в методе DoWork (), выполняемом BackgroundWorker?

ОБНОВЛЕНИЕ: я только что попробовал следующую строку кода в качестве первого утверждения моего метода BackgroundWorkers DoWork (), и он работает:

if (Thread.CurrentThread.Name == null)
    Thread.CurrentThread.Name = "MyBackgroundWorkerThread";

ОБНОВЛЕНИЕ: Как правильно сказал Джонатан Аллен, имя потока пишется один раз, поэтому перед установкой имени я добавил пустую проверку. Попытка записи имени во второй раз приведет к исключению InvalidOperationException. Как писал Марк Гравелл, это может также усложнить отладку , как только фоновые потоки в пуле будут повторно использоваться для другой работы, поэтому называйте потоки только при необходимости.

13 голосов
/ 18 июля 2010
public class NamedBackgroundWorker : BackgroundWorker
{
    public NamedBackgroundWorker(string name)
    {
        Name = name;
    }

    public string Name { get; private set; }

    protected override void OnDoWork(DoWorkEventArgs e)
    {
        if (Thread.CurrentThread.Name == null) // Can only set it once
            Thread.CurrentThread.Name = Name;

        base.OnDoWork(e);
    }
}
1 голос
/ 30 октября 2016

Вы можете расширить фонового работника через пользовательский класс:

`

public class NamedBackgroundWorker : BackgroundWorker
{

     public string Name;

     public BackgroundWorker(string Name)
     {
       this.Name = Name;
     }
}

` Теперь просто создайте объект из этого, и вы можете назвать его и использовать в качестве фонового рабочего.

0 голосов
/ 16 июля 2010

Вы можете назвать свои потоки в окне «Threads» при отладке в Visual Studio.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...