У меня есть Winform с BackgroundWorker. BackgroundWorker, помимо прочего, должен сделать HTTP-вызов страницы, заполнить некоторые данные, отправить форму и получить HTML-код, который возвращается после нажатия кнопки отправки. При этом я столкнулся с рядом блокпостов:C#/Winform: введите данные в HTML-страницу, отправьте форму
- Не удается отправить данные, потому что целевой веб-сервер не поддерживает этот метод.
- Невозможно использовать WebClient.UploadValues, опять же, потому что веб-сервер не поддерживает POST.
- Невозможно использовать элемент управления WebBrowser, потому что BackgroundWorkers посасывать COM Interop и исключение, что говорит, что это должно быть в STA потоке (однопоточном)
- Не удается запустить другой отдельный поток, потому что BW имеет сидеть и ждать результата, прежде чем он сможет продолжить (не может, или, по крайней мере, я не знаю, как это сделать, чтобы не сбой)
- Невозможно изменить ApartmentState потока, потому что это BackgroundWorker, и он бросает, если ему сказали перейти в режим STA
Что мне делать, чтобы разрешить это?
[Изменить]: точка входа приложения уже отмечена атрибутом [STAThread].
Это внутреннее приложение с двумя текстовыми полями и кнопкой для входа в систему. Сама форма имеет событие javascript onClick, которое заставляет обратную передачу (ничего себе, это необычно); WebClient выбрасывается, как указано в пункте 2; как один HttpWebRequest с полезной нагрузкой и не используя метод POST? – tsilb 2008-12-08 20:28:16