저는 기존 WinForms 프로젝트를 개선하기 위해 노력하고 있습니다. 저는 지금 아이디어를 얻지 못하고 있습니다. 그래서 나는 여기에 몇 가지 세부 사항을 흘려서 사람들이 제안 할 수있는 것을 보았습니다.WinForms 성능 사례 : 동적 양식 만들기 + 바인딩
형태는 다음과 같이 작동
우리는 정규화 된 네임 스페이스를 사용하여 컨트롤을 만들 수있는 정의 (A DB에서받은) 목록을 가지고있다. 컨트롤 (usercontrols, 기본적으로)은 리플렉션에 의해 차례로 생성되고 최종적으로 폼의 패널에 추가됩니다. 이제 각 컨트롤은 결국 컨트롤의 트리와 같은 계층 구조로 더 많이 포함 할 수 있습니다.
각 컨트롤은 고유 한 초기화를 가지며 결국 DataSet은 데이터 소스로 폼 (및 모든 컨트롤)에 으로 지정되고 각각에 데이터 바인딩이 추가되고 발생합니다.
특히, DataTable/Set 대신 특정 ROW를 컨트롤에 바인딩하는 경우가 있습니다. 그래서 약 ~ 30 사용자 컨트롤로 등 BindingManager 위치가 정확한 행을 결정하기 위해 호출
을 기대, 우리는 새로운 형태의 데이터 집합 거의 모든 데이터를 포함 를 열고 약 10 초 사랑스러운 성능을 얻을. 바인딩은 약 3-4 초가 걸립니다.
복잡한 데이터 상태에서 약 30-40 초의 여는 시간, 약의 약 바인딩 시간이 소요됩니다.
이제 매우 간단 해졌습니다. 우리는 코드가 많아서 속도가 느려지므로 으로 생각하고 일부 명소를 알기 위해 프로파일을 작성했습니다.
그러나 성능의 주된 문제는 바인딩 인 것 같습니다.
드릴 다운하고 이러한 종류의 성능 문제를 찾는 방법에 대한 몇 가지 제안을 듣고 싶습니다. 특히 수백 가지 바인딩이 복잡해 지도록 정렬하는 방법.
아니요, DB 시간은 다른 곳에서 보냈습니다. 방출하는 것에 대해 당신은 무엇을합니까? 여기서 'async'로딩을 시도하고 차례대로 각 컨트롤과로드/바인드를 시도했지만 ControlCollection이 작동하고 반응하는 방식으로 인해 Winforms에 너무 많은 단점이 있습니다. –