Um die Kennung des aktuellen Threads zu ermitteln, verwenden Sie - `Thread.CurrentThread.ManagedThreadId'. Aber in diesem Fall benötigen Sie vielleicht die aktuelle Win32-Thread-ID - verwenden Sie pInvoke, um sie mit dieser Funktion zu erhalten:
[DllImport("Kernel32", EntryPoint = "GetCurrentThreadId", ExactSpelling = true)]
public static extern Int32 GetCurrentWin32ThreadId();
Zuerst müssen Sie die Verbindung zwischen der verwalteten Thread-ID und der Win32-Thread-ID speichern - verwenden Sie ein Wörterbuch, das eine Win32-ID auf einen verwalteten Thread abbildet.
Um dann einen Thread anhand seiner Kennung zu finden, iterieren Sie mit Process.GetCurrentProcess().Threads über die Threads des Prozesses und suchen den Thread mit dieser Kennung:
foreach (ProcessThread thread in Process.GetCurrentProcess().Threads)
{
var managedThread = win32ToManagedThread[thread.id];
if((managedThread.ManagedThreadId == threadId)
{
return managedThread;
}
}