Forums Neueste Beiträge
 

AppDomain.GetCurrentThreadId() ist veraltet

08/07/2008 - 08:35 von Werner Perplies | Report spam
Hi,

Wenn ich einen Hook so installiere:
hHook = SetWindowsHookEx(hookType, filterFunc, IntPtr.Zero,
(int)AppDomain.GetCurrentThreadId());

erhalte ich die folgende Warnung:

Warnung 1 "System.AppDomain.GetCurrentThreadId()" ist veraltet:
"AppDomain.GetCurrentThreadId has been deprecated because it does not
provide a stable Id when managed threads are running on fibers (aka
lightweight threads). To get a stable identifier for a managed thread, use
the ManagedThreadId property on Thread.
http://go.microsoft.com/fwlink/?linkid202"

Der Hook selbst wird installiert und funktioniert.

Wenn ich das richtig verstanden habe, müsste also Folgendes funktionieren:

hHook = SetWindowsHookEx(hookType, filterFunc, IntPtr.Zero,
System.Threading.Thread.CurrentThread.ManagedThreadId);

Leider wird der Hook jetzt nicht mehr installiert.

Wie mache ich es also richtig?

Schon mal Danke für Tipps.
Werner
www.weepee.eu
 

Lesen sie die antworten

#1 Kerem Gümrükcü
08/07/2008 - 09:20 | Warnen spam
Hallo Werner,

Leider wird der Hook jetzt nicht mehr installiert.
Wie mache ich es also richtig?



Du solltest erst mal mit
"System.Runtime.InteropServices.Marshal.GetLastWin32Error();"
nachsehen, was das Problem ist, das wàre der erste richtige Ansatz,...

benutze das hier, da der ManagedThreadID AFAIK kein richtiger System Thread
ID ist,
eher ein eindeutiger Bezeichner für einen CLR Managed Thread (wenn man das
so nennen kann)
aber der Funktionsaufruf einen im (Windows-Kernel) System auffindbare
ThreadID erwartet:

[DllImport("kernel32.dll")]
public static extern int GetCurrentThreadId();

übergib dann den Rückgabewert der SetWindowsHookEx und das
sollte dann gehen...

Ich habe das auch gerade mal überprüft und ich hatte recht:

(Ausgabe einer MessageBox)



Managed Thread Id: 1
Native Thread Id: 7592

OK




Grüße

Kerem



Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Latest Project: http://www.codeplex.com/restarts
Latest Open-Source Projects: http://entwicklung.junetz.de
"This reply is provided as is, without warranty express or implied."

Ähnliche fragen