BackgroundWorker を持つ Winform があります。BackgroundWorker は、とりわけ、ページに対して HTTP 呼び出しを行い、データを入力し、フォームを送信し、送信ボタンを「クリック」した後に返される HTML を取得する必要があります。これを行っている間、私は多くの障害に遭遇しました:
- ターゲット Web サーバーがそのメソッドを 405 サポートしていないため、データを POST できません。
- Web サーバーが POST をサポートしていないため、WebClient.UploadValues も使用できません。
- BackgroundWorkers が COM 相互運用性を損ない、STA スレッド (シングルスレッド アパートメント) にある必要があるという例外がスローされるため、WebBrowser コントロールを使用できません。
- BW は続行する前に座って結果を待つ必要があるため、別の個別のスレッドを実行できません (実行できないか、少なくともクラッシュしない方法を知りません)。
- スレッドは BackgroundWorker であるため、スレッドの ApartmentState を変更できず、STA モードに移行するように指示された場合にスローされます
これを解決するにはどうすればよいですか?
[編集]: アプリのエントリポイントは、[STAThread] 属性で既にタグ付けされています。