我有一个带有 BackgroundWorker 的 Winform。BackgroundWorker,除其他外,必须对页面进行 HTTP 调用,填写一些数据,提交表单,并检索“单击”提交按钮后返回的 HTML。在执行此操作时,我遇到了许多障碍:
- 无法发布数据,因为目标网络服务器不 405 支持该方法。
- 再次不能使用 WebClient.UploadValues,因为网络服务器不支持 POST。
- 无法使用 WebBrowser 控件,因为 BackgroundWorkers 在 COM 互操作方面很糟糕,并且引发了一个异常,表明它必须在 STA 线程中(单线程单元)
- 无法运行另一个单独的线程,因为 BW 必须坐下来等待结果才能继续(不能,或者至少我不知道一种不会崩溃的方法)
- 无法更改线程的 ApartmentState,因为它是 BackgroundWorker,如果被告知进入 STA 模式,它会抛出
我应该怎么做才能解决这个问题?
[编辑]:应用入口点已经用 [STAThread] 属性标记。