때때로 사용자는 실행하는 데 시간이 걸리는 확장 된 기술 작업을 시작합니다. 이 경우 일반적으로 현재 진행중인 작업에 대한 정보와 함께 진행률 표시 줄을 표시하는 것이 좋습니다.
UI와 논리 계층을 밀접하게 연결하지 않으려면 일반적으로 일종의 프록시를 통해 통신하는 것이 가장 좋습니다. 즉, 백엔드는 자체 UI 요소를 조작하거나 중개 계층과 직접 상호 작용하지 않아야합니다.
분명히이 작업을 수행하려면 어딘가에 콜백이 있어야합니다. 일반적으로 두 가지 방법 중 하나로 구현했습니다.
변경 가능한 오브젝트를 백엔드로 전달하고 진행 중에 백엔드가 변경하도록하십시오. 개체는 변경이 발생할 때 프런트 엔드에 알립니다.
양식의 콜백 함수
void f(ProgressObject)
또는ProgressObject -> unit
백엔드가 호출하는 콜백 함수를 전달하십시오 . 이 경우 백엔드는이를 구성하며ProgressObject
완전히 수동적입니다. 진행 상황을보고 싶을 때마다 새로운 객체를 구성해야한다고 가정합니다.
이 방법의 단점과 장점은 무엇입니까? 사용하기에 합의 된 최상의 방법이 있습니까? 사용 환경이 다른가?
내가 간과 한 진행 상황을보고하는 완전히 다른 기술이 있습니까?
BackgroundWorker
그 RH 언급을 사용 합니다. BackgroundWorker
설계 상 별도의 스레드에서 실행되는 것처럼 "진행 형식"등과 함께 예외를 전달하기위한 간단한 메커니즘과 함께 사용자 정의 클래스로 래핑됩니다 . 우리가 .Net에서 제안한 방식으로 그 기능을 사용하는 한, 그것은 관용적이라고 할 수 있습니다. 주어진 언어 / 프레임 워크 맥락에서 "아이디 오 매틱"이 가장 좋습니다.