我有一个带有BackgroundWorker的Winform。除此之外,BackgroundWorker必须对页面进行HTTP调用,填写一些数据,提交表单并检索在“单击”提交按钮后返回的HTML。我这样做遇到了一些障碍:C#/ Winform:输入数据到HTML页面,提交表格
- 无法发布数据,因为目标web服务器不支持该方法。
- 不能再使用WebClient.UploadValues,因为Web服务器不支持POST。
- 不能使用WebBrowser控件,因为BackgroundWorkers吸吮COM Interop并抛出异常,说明它必须位于STA线程中(单线程公寓)
- 无法运行另一个单独的线程,因为BW有坐在等待结果,然后才能继续(不能,或者至少我不知道一种方法来做到这一点,不会崩溃)
- 无法更改线程的ApartmentState,因为它是一个BackgroundWorker和它抛出如果被告知去STA模式
我应该怎么做才能解决这个问题?
[编辑]:应用程序入口点已标记为[STAThread]属性。
这是一个带有两个文本框和一个登录按钮的内部应用程序。表单本身有一个javascript事件onClick,强制回发(哇,这很不寻常);如第2点所述,WebClient抛出;一个HttpWebRequest如何与一个有效载荷和不使用POST方法? – tsilb 2008-12-08 20:28:16