在C#中,我正在使用InternetExplorer.Application(一个进程外的COM服务器)编写一些自动化代码。
我有一个" dynamic browser
"变量持有对此自动化对象的引用并且能够访问
dynamic body = browser.document.body;
browser.document.getElementById("someInput").value = "test";
但是完全无法通过
访问窗口对象 browser.document.parentWindow
或browser.document.defaultView
。
例如:
browser.document.parentWindow.execScript("alert('hello')");
或
dynamic window = browser.document.parentWindow;
当我尝试访问上面的窗口对象(或使用defaultView)时,我总是收到异常消息"错误:指定的强制转换无效。"这是为什么?
在SA上还有另外一个与此类似的问题,但是接受的答案是关于我认为是使用WebBrowser控件的inproc服务器的线程问题,我再次使用out或process服务器,所以我不知道认为任何线程问题都适用于我的问题。
Techincal详细信息:Windows 7 64位,Internet Explorer 11,.NET 4.0控制台应用程序
答案 0 :(得分:1)
解决方案是将我的类标记为单线程单元,在主入口点上具有[STAThread]属性。我曾经想过,因为它是一个进程外的COM服务器,所以不存在任何同步问题。