#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();
Комментариев нет:
Отправить комментарий