GUI 업데이트를위한 BackgroundWorker : 부드러운 접근 방식
배경 스레드에서 GUI를 업데이트하는 것은 까다로울 수 있지만 올바른 기술을 사용하면 관리 가능합니다. 이 안내서는 시간이 많이 걸리는 프로세스 (예 : 데이터베이스 액세스)가 GUI를 주기적으로 새로 고치는 데 필요한 시나리오를 다룹니다. 솔루션에는 작업을 분리하고 스레드를 효과적으로 사용하는 것이 포함됩니다.
초기 설정
BackgroundWorker
인스턴스를 만듭니다. 이 객체는 장기 실행 배경 작업을 위해 특별히 설계되었습니다. 이벤트 핸들러를 dowork
및 ProgressChanged
이벤트에 첨부하십시오. dowork
는 데이터베이스 상호 작용을 처리하고 ProgressChanged
는 GUI를 업데이트합니다.
멀티 스레드 작업
runworkerasync
를 사용하여 backgroundworker
를 시작합니다. 이것은 dowork
이벤트를 시작하여 GUI를 차단하지 않고 데이터베이스 작업을 진행할 수 있습니다. 선택적 진행 상황 업데이트는 ProgressChanged
이벤트로 전송되어 사용자 피드백을 제공 할 수 있습니다.
GUI 상호 작용
ProgressChanged
이벤트 핸들러는 GUI 업데이트가 발생하는 곳입니다. 결정적으로 배경 스레드는 UI를 직접 수정할 수 없습니다. 따라서 기본 스레드에서 실행되는이 이벤트 핸들러는 GUI 요소를 업데이트 할 수있는 유일한 안전한 장소입니다.
지속적인 업데이트
도전은이 과정을 간격으로 반복하는 데 있습니다. thread.sleep ()
를 dowork
이벤트에서 직접 사용하지 않으므로 GUI가 얼어 붙을 수 있습니다. 대신, runworkerCompleted
이벤트 핸들러 내에서 bekgroundworker
를 다시 시작하여 update ()
메소드를 통한 통화를 통해 연속 루프를 만듭니다.
사용자 정의 가능한 업데이트 주파수
업데이트 간격을 제어하려면 runworkerasync (Object Argument)
오버로드를 사용하십시오. 원하는 간격을 인수로 전달하십시오. dowork
이벤트 내에서 stride.sleep (interval)
가있는 루프를 사용하여 업데이트 주파수를 관리합니다.
이 전략은 응용 프로그램 응답 성을 손상시키지 않고 효율적인 GUI 업데이트를 허용하여 원활한 사용자 경험을 제공합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3