Именование BackgroundWorker

Кратко без регулярных выражений, но HTTPResponseCode => httpresponse_code:

def from_camel(name):
    """
    ThisIsCamelCase ==> this_is_camel_case
    """
    name = name.replace("_", "")
    _cas = lambda _x : [_i.isupper() for _i in _x]
    seq = zip(_cas(name[1:-1]), _cas(name[2:]))
    ss = [_x + 1 for _x, (_i, _j) in enumerate(seq) if (_i, _j) == (False, True)]
    return "".join([ch + "_" if _x in ss else ch for _x, ch in numerate(name.lower())])
23
задан Robert 16 July 2010 в 17:56
поделиться

3 ответа

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

UPDATE: Я только что попробовал следующую строку кода в качестве первого оператора метода BackgroundWorkers DoWork(), и она работает:

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

UPDATE: Как правильно сказал Джонатан Аллен, имя потока записывается один раз, поэтому я добавил проверку нуля перед установкой имени. Попытка записать имя во второй раз приведет к InvalidOperationException. Как написал Marc Gravell, это также может усложнить отладку отладки, так как пул фоновых потоков повторно используется для другой работы, поэтому называйте потоки только при необходимости...

33
ответ дан 29 November 2019 в 01:43
поделиться
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);
    }
}
13
ответ дан XIU 29 November 2019 в 01:43
поделиться

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

0
ответ дан oekstrem 29 November 2019 в 01:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: