Страницы

Поиск по вопросам

четверг, 2 января 2020 г.

Как узнать, в каком потоке выполняется код

#c_sharp #многопоточность


Есть код:

Thread newClient = new Thread(StartProcessing);
newClient.IsBackground = true; 
newClient.Start();


В нем выполняется функция. Потоку можно задать имя - номер клиента.

Как получить уже внутри функции StartProcessing имя текущего потока?
    


Ответы

Ответ 1



Попробуйте использовать статическое свойство CurrentThread класса Thread - оно представляет выполняющийся в данный момент поток. Например: public static void StartProcessing() { // your code lock(_lockObj) { Console.WriteLine(Thread.CurrentThread.Name); } }

Ответ 2



GetCurrentThreadId - ID текущего потока. Для старых версий .NET лучше использовать System.Threading.Thread.CurrentThread.ManagedThreadId

Ответ 3



Для получение номера потока можно использовать Environment.CurrentManagedThreadId или Thread.CurrentThread.ManagedThreadId Если в поток надо передать какие-то данные, то можно использовать Thread.SetData и Thread.GetData, а также класс ThreadLocal. Если требуется просто имя, то так: using System.Threading; var t = new Thread(() => { Console.WriteLine(Thread.CurrentThread.Name); // выводит 123 }); t.Name = "123"; t.Start();

Комментариев нет:

Отправить комментарий