在WCF Web服务中使用线程和事件处理程序

时间:2010-06-17 07:20:26

标签: c# wcf multithreading event-handling

在制作WCF Web服务时,我在使用带有webbrowser控件的方法时遇到了问题。该方法启动一个线程并使用webbrowser控件填写一些表单并进一步单击,等待事件处理程序触发并返回我需要的答案。该方法经过测试并在自己的环境中运行,但在WCF Web服务环境中使用,事件处理程序不会触发。结果是等待手动重新开始。这是因为新线程还是因为Web服务的错误事件处理?如果是,那么什么是合理的解决方案?

1 个答案:

答案 0 :(得分:0)

  

Browser1 - > Web App - >网络服务    - >在其他网站上执行操作(新浏览器 - >打开网址 - >填写网址    - >按ok - >捕获响应 - >过程回答)

如果系统中创建“新浏览器”的部分作为服务运行,则作为Windows服务,自托管WCF服务进程或IIS内部的某些内容;那么你很可能不会得到GUI事件,因为没有GUI。除其他事项外,GUI事件处理程序需要Windows消息泵,这在这些情况下不可用。

尝试在Windows Forms主机下托管您的服务,看看,我怀疑它会起作用。

如果您的系统必须在IIS或Windows服务(非GUI)下,那么您始终可以与代理主机进程通信,该进程具有消息泵,可以为您执行所有浏览操作。完成后,您的“回答”可以发送回网络应用