Работая с приложением .NET, я запустил исключение «операция с несколькими потоками недопустима», только, похоже, это происходит в правильном потоке.
Есть ли способ узнать, в каком потоке был создан определенный элемент управления?
Что я нашел до сих пор:
Операция «InvokeRequired» сообщает только ЕСЛИ текущий поток является «потоком владельца» ...
Немного забавного времяпровождения с Reflector в методе Control.Invoke(...)
привело меня к методу P / Invoke в user32.dll, который получает идентификатор потока из дескриптора окна:
[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
public static extern int GetWindowThreadProcessId(HandleRef hWnd, out int lpdwProcessId);