매초마다 10 개 이상의 아이템을 트리스트에 추가하는 애플리케이션이 있습니다. 이로 인해 컨트롤과 UI가 응답하지 않고 때로는 충분히 페인트 할 수 없기 때문에 많은 CPU가 소모됩니다.컨트롤 페인트 스팸 방지 (트리 뷰,리스트 뷰 컨트롤의 과중한 업데이트 중)
이러한 새 항목은 다른 스레드에서 들어 오니, 로컬 캐싱과 같은 일을하지 않는 한 .BeginUpdate()
을 사용할 수 없습니다.
고정 된 간격으로 BeginUpdate() 및 EndUpdate를 수행하면 간격 사이에 도색되지 않은/비어 있음을 제어합니다.
이 문제를 해결하는 가장 좋은 해결책은 무엇입니까? 이론적 인 컨트롤에서는 어쨌든 자신의 캐싱을 가지기 때문에 캐싱은 나에게 어리석은 것처럼 들리므로, 컨트롤이 업데이트되지 않지만 무언가가 아닌 마지막 페인트 된 상태로 컨트롤을 남겨 둘 수있는 방법이 있어야합니다.
doevents가 아닌 invoke를 사용하고 있습니다. –
예,하지만 귀하의 문제에 대한 이해는 응용 프로그램이 응답하지 않는 것이 었습니다. 내 생각 엔이 문제는로드가 아니라 메시지 처리 능력입니다. DoEvents를 추가하면 호출을 사용하는지 여부에 관계없이 응용 프로그램이 반응 형이 될 가능성이 높습니다. 10 초/초 동안 반응이없는 앱이 있다는 것은 이상한 것처럼 보이므로 CPU로드가 아니라 처리 시간이라고 추측합니다. – Tollo