【发布时间】:2017-04-20 03:25:41
【问题描述】:
在开发 websocket 服务器时,我启动监听器如下:
private void StartAccept()
{
_listener.BeginAcceptTcpClient(new AsyncCallback(HandleAsyncConnection), null);
}
因为它是非阻塞的,能够接受多个连接。
响应回调中的一个函数应该将 HTML 页面打印到选定的默认打印机:
WebBrowser webBrowser = new WebBrowser();
webBrowser.DocumentText = "<html><body><p>I am HTML text!</p><body></html>";
webBrowser.Print();
这是失败的,因为我尝试从 AsyncCallback 中创建 WebBrowser 对象:
ActiveX control '8856f961-340a-11d0-a96b-00c04fd705a2' cannot be instantiated because the current thread is not in a single-threaded apartment.
如何在此处创建 WebBrowser 对象?
【问题讨论】:
-
或者考虑一个专用的STA线程和一个打印队列,这样只需要一个实例化。
-
感谢您的提示.. 在关注了几个链接之后,我最终得到了这个完美的解决方案:stackoverflow.com/questions/416314/…
标签: c# .net activex asynccallback