Я получил это (ошибка в заголовке выше) из потока 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);
}