저는 웹 서버에 비동기 적으로 로그인하고 나중에 데이터에 대한 작은 요청을 보내는 산업용 웹 모듈을 연구하고 있습니다. 먼저 세션 쿠키를 수신하라는 GET 요청을 보낸 다음 UN 및 PW와 POST 요청을 보냅니다. HttpWebRequest 클래스의 BeginGetRequestStream 및 BeginGetResponse 메서드를 사용하려고합니다. 그러나 아래의 MSDN에서 따옴표를 읽으면 일부 부분이 비동기 적이라는 것을 언급합니다.BeginGetRequestStream 및 BeginGetResponse를 실제로 비동기로 만드는 방법은 무엇입니까?
이 문제를 어떻게 해결해야합니까? 나는이 방법들을 완전히 사용하지 말아야 하는가? 아니면 fail-safe 메카니즘을 만들어야 만 코드가 길어질지라도 (만약 가능하다면) 코드가 건너 뛰게된다면? 코딩 노력은 문제가되지 않습니다. 중요한 것은 모듈이 실제로 비동기이며 메인 프로그램을 절대 차단하지 않는 것입니다.
감사합니다.
BeginGetRequestStream 방법
완료하는 데 (DNS 해상도, 프록시 탐지 및 TCP 소켓 예를 들어 연결)이 방법은 비동기되기 전에 일부 동기 설치 작업 이 필요합니다. 결과로이 메서드는 사용자 인터페이스 (UI) 스레드에서 절대로 호출해서는 안됩니다. 네트워크 동기화에 대한 예외가 발생하기까지 상당한 시간 (네트워크 설정에 따라 수 분내 )이 소요되어 초기 동기화 설정 작업을 완료해야하므로 오류가 발생하거나 메서드 이 성공합니다.BeginGetResponse 메서드는 (DNS 확인, 프록시 검색 및 TCP 소켓 연결, 예 : )으로 일부 동기 설정 작업을 필요로합니다.이 메서드는 비동기식으로 처리됩니다. 결과적으로 사용자 인터페이스 (UI) 스레드 에서이 메서드를 호출하면 안됩니다. 네트워크에 따라 초기 동기화 설정 작업을 완료하는 데 상당한 시간이 걸릴 수 있으므로 (네트워크 설정에 따라 최대 몇 분, ) 오류가 발생하거나 메서드 이 성공합니다.
왜 'HttpClient'를 사용하지 않으시겠습니까? 그것은 완전히'async'이고 Task Based PRogramming 모델 –
Oha, 정보를 제공해 주신 것을지지합니다. 어떤 경우에도 훨씬 더 완전히 다른 방법이 있습니까? 내가 방법에 사용하는 데 많은 시간을 할애하기 전에 그들 모두에 대해 조금 알고 싶다. (불행히도 나는 이미 HttpWebRequest에 시간을 할애했다. 그러나 VB에서 학습 한 시간이기도하다.) – Comodorewaran
예를 들어, Await에 대해서 비동기? – Comodorewaran