우리는 WPF 앱 (실제로 VSTO WPF 앱)을 가지고 있습니다. 특정 컨트롤에는 클릭 할 때 웹 서비스에서 데이터를로드하고 UI를 업데이트하는 여러 요소가 있습니다. 현재 우리는 이러한 웹 요청을 동 기적으로 수행하여 응답이 돌아올 때까지 UI 스레드를 차단합니다. 이렇게하면 데이터가로드되는 동안 사용자가 앱을 클릭하지 못하며 잠재적으로 데이터를 반환 할 때 데이터를 처리 할 수없는 상태가됩니다.WPF에서 비동기 작업 중 UI를 차단하는 방법
물론 요청이 오랜 시간이 걸릴 경우 앱이 응답하지 않게됩니다. 이상적으로는이 시간 동안 취소 버튼을 활성화하고 싶지만 다른 것은 없습니다. 이 작업을 수행하는 영리한 방법이 있습니까? 아니면 백그라운드 작업자를 사용하여 비동기 적으로 실행되도록 요청을 전환하고 요청이 진행되는 동안 취소 버튼을 제외한 모든 컨트롤을 사용할 수 없도록 설정해야합니까?
편집 : 우리는 이미 장시간 실행 (파일 다운로드 등) 할 것으로 예상되는 작업에 대해 진행 대화 상자 창이 나타납니다. 사건은 꽤 빨리 (최대 2 초) 행동을 기대하지만 때로는 더 오래 걸릴 수도 있습니다. 이러한 상황에서 잠시 동안 전체 창을 깜박 거리는 것은 너무 산만합니다.
SRY, 편집 – mcintyre321