2012-05-28 5 views
0

내 신청서를 제출하면 WebClientUploadStringAsync까지 기다려야합니다. 삭제 표시되기 전에 응답을 반환합니다. 몇 초 동안 UI 스레드를 차단하여이 작업을 수행하려고했지만 UI가 차단되었을 때 응답이 없습니다. 자물쇠를 풀 때 (matther가 Thread.sleep 또는 ManualResetEvent), 응답이 동시에 발생합니다. 물론 UI가 아닌 다른 스레드에서 작동하는 UploadStringAsyncUploadStringCompleted입니다. 어쩌면 당신은이 행동의 이유가 무엇인지 알 수있을 것입니다.WebClient - UI를 블로킹하는 방법

답변

2

당신은이 작업을 수행하지 않아야 할 수 없습니다

당신은 OS가 당신을 못하게하고 어떤이 그대로 무기한으로 업데이트 할 필요가 없습니다 수 있기 때문에 응용 프로그램이 비활성화 될 때 무기한 차단할 수 없습니다 웹 요청이 얼마나 오랫동안 걸릴지 또는 가능한지 알려주는 방법.

대신 앱을 정상적으로 사용하는 동안 적절한 시간 (또는 시간)에 웹 서버에 데이터를 제출해야합니다. 비활성화 중에 특정 상태를 저장하려면 응용 프로그램을 다시 활성화하거나 다시 시작한 경우 (데이터의 유형 및 관련성에 따라 적절한 경우)이 내용을 유지하고 (approrpiate로 유지해야 함) 응용 프로그램을 다시 활성화하거나 다시 시작해야합니다.

+0

감사합니다. 그러나 상황은 그렇게 간단하지 않습니다. 하나는 나의 어플리케이션에서 3 개의 webRequest를 요구했고, 다른 하나는 이전 WebRequest의 응답에서 정보를 사용해야합니다. 그리고 나는 서버가 이것을 오류로 해석하고 오류에 대한 정보 만 제공하기 때문에 webRequest를 다시 보낼 수 없습니다. 그래서, 나는 webResponse를 놓친다면 데이터를 다시 보낼 수 없습니다. – Thaven