让自定义Prompt窗体中在BackgroundWorker中使用COM组件WebBrowser

本文介绍了如何在自定义Prompt窗口中,通过BackgroundWorker在STA线程中使用COM组件WebBrowser。讲解了Prompt窗体的实现,包括TextBox、Button和WebBrowser的布局,以及如何获取WebBrowser的Cookie信息。同时,文章解决了在BackgroundWorker中由于线程模式问题导致的异常,通过创建新的STA线程并使用Join方法确保窗体关闭后继续执行。
摘要由CSDN通过智能技术生成

Prompt Window的实现:

 

解释:

从实现的第一行线程的代码可以看出,Prompt运行的内容所在的线程需要使用STA模式,如果开发时不使用像WebBrowser这样的COM的话,可以忽略这行代码,关于STA与MTA的解释在这里(http://stackoverflow.com/questions/127188/could-you-explain-sta-and-mta)可以找到。重点核心的代码就是prompt.ShowDialog()以及它下面的一行,ShowDialog会显示窗体,代码停留在这里直到窗体被关闭。当窗体关闭时,可以把窗体内的文本返回,而这里所返回的是浏览器的Cookie信息。

让WebBrowser在BackgroudWorker中工作:

 

解释:

假设上面的代码在BackgroundWorker中运行,时不时地就会有异常发生,原因是BackgroundWorker本身的线程模式不是STA。所以需要从当前位置新开启一个STA模式的,为了让代码暂时停留直到窗体关闭,用Join进行阻塞。Thread构造函数中所使用的是匿名访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值