Щоб знайти поточне використання потоку Id - `Thread.CurrentThread.ManagedThreadId '. Але в цьому випадку вам може знадобитися поточний ідентифікатор нитки win32 - використовуйте pInvoke, щоб отримати його з цією функцією:
[DllImport("Kernel32", EntryPoint = "GetCurrentThreadId", ExactSpelling = true)]
public static extern Int32 GetCurrentWin32ThreadId();
Спочатку вам потрібно буде зберегти керований ідентифікатор потоку та з'єднання ідентифікатора нитки win32 - використовувати словник, який відображає ідентифікатор win32 для керованого потоку.
Потім, щоб знайти потік за його id iderate над потоком процесу, використовуючи Process.GetCurrentProcess (). Нитки та знайдіть нитку з цим id:
foreach (ProcessThread thread in Process.GetCurrentProcess().Threads)
{
var managedThread = win32ToManagedThread[thread.id];
if((managedThread.ManagedThreadId == threadId)
{
return managedThread;
}
}