Я пытаюсь создать хук для отслеживания текущей позиции курсора мыши. Ничего важного, мне просто нужно было подсчитать несколько пикселей при разработке интерфейса, и я хотел научиться создавать ловушки, поэтому я решил пойти трудным путем, а не вменяемым.
Я нашел пример кода, который объявляет следующую функцию:
<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.
Вызов функции ith AppDomain.GetCurrentThreadID работает, но я действительно хотел бы иметь «стабильный идентификатор» для моей нити.
Может ли кто-нибудь объяснить мне, возможно ли использовать ManagedThreadID в этом контексте (я полагаю, нет) и, если нет, то, что мне нужно избегать, чтобы AppDomain.CurrentThreadID не стал «нестабильным»?
Приветствия