Я пытаюсь создать крючок для контроля текущей позиции курсора мыши. Ничего важного, мне просто нужно подсчитать некоторые пиксели во время разработки интерфейса и захотелось узнать, как создать крючок, поэтому я решил пойти нелегко, вместо разумного способа.
Я нашел пример кода, который объявляет следующую функцию:
<DllImport("User32.dll", CharSet:=CharSet.Auto, _
CallingConvention:=CallingConvention.StdCall)> _
Public Overloads Shared Function SetWindowsHookEx _
(ByVal idHook As Integer, ByVal HookProc As CallBack, _
ByVal hInstance As IntPtr, ByVal wParam As Integer) As Integer
End Function
При вызове функции используется следующий код:
hHook = SetWindowsHookEx(WH_MOUSE, _
hookproc, _
IntPtr.Zero, _
AppDomain.GetCurrentThreadId())
Но Appdomain.GetCurrentThreadID генерирует предупреждение: "Открытая общая функция GetCurrentThreadId() As Integer" устарела ":" AppDomain.GetCurrentThreadId устарел, потому что он не обеспечивает стабильный идентификатор, когда управляемые потоки работают на волокнах (также известный как легкий потоки). Чтобы получить стабильный идентификатор управляемого потока, используйте свойство ManagedThreadId для Thread. "
Я пытался использовать ManagedThreadID, но это не работает. Идентификатор потока, как представляется, является логическим идентификатором потока потока, поскольку он работает в среде .net, а не в идентификаторе потока Win32.
Вызов функции с AppDomain.GetCurrentThreadID работает, но я действительно хотел бы иметь "стабильный идентификатор" для моего потока.
Может кто-нибудь объяснить мне, можно ли использовать ManagedThreadID в этом контексте (я предполагаю, что нет) и, если нет, то, что мне нужно избегать, чтобы остановить AppDomain.CurrentThreadID, стать неустойчивым?
Приветствия