웹 클라이언트를 사용하여 서버에 요청 매개 변수를 보내고 요청에 따라 응답을받습니다. 하지만 내가 웹 클라이언트 요청을 보내려고 할 때마다 직면하는 문제는 요청을 보내는 동안 인터넷 연결이 끊어지면 내 응용 프로그램이 멈추는 것입니다. 때로는 응용 프로그램이 충돌합니다. 내 코드 조각은 아래에 있습니다.웹 클라이언트 요청이 응답하지 않을 때 인터넷 연결이 끊어지면 응답하지 않습니다.
WebClient webClient=new WebClient()
userData = webClient.UploadValues(URL, "POST", parameters);
`
인터넷 연결을 끊으면 해당 줄을 실행하는 동안 응용 프로그램이 중단됩니다.
당신은 답변을 가지고 있지만 비동기 메서드 인'.UploadValuesAsync'로 전환하여 UI를 프로세스에서 분리하고 작업 진행에 대한 알림을 얻으라고 제안합니다. [UploadProgressChanged 이벤트] (https :// /msdn.microsoft.com/ko-kr/library/system.net.webclient.uploadprogresschanged(v=vs.110).aspx). 또한 [NetworkAvailabilityChanged 이벤트] (https://msdn.microsoft.com/en-us/library/system.net.networkinformation.networkchange.networkavailabilitychanged.aspx)를 살펴보십시오. 사용 가능한 네트워크 연결이 없을 때 알림을 받으려면 이벤트를 구독하십시오. – Jimi
@Jimi '.UploadValuesAsync'를 사용하라는 제안을합니다. 그것은 작동하지만 아무것도 반환하지 않으며 나는 바이트 형식으로 응답을 원합니다. 응답에 따라 우리는 다른 작업을 수행합니다. 그 상황에 대한 해결책을 가져라. 감사합니다. . –
WebClient 이벤트 [UploadValuesCompletedEventHandler] (https://docs.microsoft.com/en-us/dotnet/api/system.net.uploadvaluescompletedeventhandler?view=netframework-4.7)를 구독하십시오. 업로드가 완료되면 [UploadValuesCompletedEventArgs] (https://docs.microsoft.com/en-us/dotnet/api/system.net.uploadvaluescompletedeventargs?view=netframework-4.7) 'e.Result'에는 바이트 배열의 서버. 또한'e.Error'와'e.Cancelled'를 반환합니다. (이번에는 2 "L"이됩니다.) – Jimi