Я получил это (ошибка в заголовке выше) из пула потоков System.Thread.Timer Итак, у меня есть TimerWrapper, который обертывает System.Thread.Timer, чтобы переместить фактическое выполнение в System.Thread.ThreadPool, и я все еще получаю его, поэтому я перемещаю его в новый поток (обратный вызов) .Start (), и я все еще получаю его. Как происходит отправка вызова синхронного ввода, когда я помещаю его в совершенно новый поток ???
Это очень-очень маленький прототип приложения, в котором все, что я делаю, это запускаю таймер, который делает это ...
IEnumerable swc = SHDocVw.ShellWindows()
HashSet<WindowInfo> windows = new HashSet<WindowInfo>();
foreach (SHDocVw.InternetExplorer ie in swc)
{
if (!ie.FullName.ToLower().Contains("iexplore.exe"))
continue;
IntPtr hwnd;
IEPlugin.IOleWindow window = ie.Document as IEPlugin.IOleWindow;
window.GetWindow(out hwnd);
WindowInfo info = new WindowInfo();
info.handle = hwnd;
info.extraInfo = ie;
windows.Add(info);
}