2017-09-26 1 views
0

윈도우 폼 응용 프로그램에서 데이터 렌더링을 위해 datagridview를 사용하고 있습니다. 응용 프로그램이 실제로 많은 행을 가져오고 시스템이 멈추어 응답하지 않는 상태가됩니다. 그것은 일반적으로 100K + 행을 얻고 있습니다. 일반 C# 윈도우 폼 응용 프로그램이 데이터 그리드 뷰에서 쉽게로드 할 수있는 행 수일반 C# 윈도우 폼 응용 프로그램에서 DataGridview에서 쉽게로드 할 수있는 행 수

+1

속도는 열의 수와 저장하는 데이터의 유형에 따라 달라질 수 있습니다. 또한 데이터를 렌더링하는 방법에 대한 정보도 없습니다. 아마 당신이 우리가 당신을 더 잘 도울 수있는 몇 가지 추가 정보를 제공하면. 당신은 일반적으로 100k 행과 함께 괜찮을 것입니다 ... – 0014

+1

내가 믿는 UI 스레드에서 데이터를로드하고 있습니다. 백그라운드 작업자/별도의 스레드/비동기 작업에로드를 로딩하고 데이터가 완전히로드되면 UI 스레드와 DataGrid에 모두 동기화합니다. 이렇게하면 '응답이없는 상태'가 제거되지만 더 나은 해결책은 사용자가 거의 처리 할 수없는 방식으로 단일 그리드에서 100K + 레코드가 거의 필요하지 않으므로 논리를 다시 생각하는 것입니다. 한 번에 100K 개의 링크가있는 검색 엔진 응답을 어떻게보고 싶습니까? –

+2

그것은 잘못된 질문입니다. 인간의 이익을위한 UI를 만들고 OS를 행복하게 만드는 것이 아닙니다. 따라서 실제 행은 "사용자가 합리적으로 처리 할 수있는 행 수"입니다. 약 50. 물론 perf 문제가 발생하지 않습니다. 무릎에 100,000 개의 행을 덤핑하면 아무도 보지 않는 완전히 사용할 수없는 UI가 생성되므로 고려할 가치가 없습니다. 영감을 얻으려는 백만 건의 검색어와 관련하여 Google이 조회수를 표시하는 방식을 살펴보십시오. –

답변

1

먼저 100k + 행을 가져 와서 모두 그리드에 표시하는 것이 좋지 않다고 생각합니다. 사용은 더 빠르고 효율적인 페이징을 사용할 수 있습니다. 데이터베이스의 트래픽 및 성능을 기반으로 한 번에 가져올 레코드 수를 제어 할 수 있습니다.

@pageNumber AS INT, 
@rowsPerPage AS INT, 

OFFSET((@PageNumber -1) * @RowsPerPage) ROWS 
FETCH NEXT @RowsPerPage ROWS ONLY; 
GO 

이 글을 읽기 : 내가 응용 프로그램을 분석하고 DataGridView에 아무 문제가 없다는 것을 발견했다 https://10tec.com/articles/why-datagridview-slow.aspx

0

. 필요한 경우 100K 행을 포함 할 수 있습니다. 많은 시간이 걸리고 응용 프로그램이 응답하지 않는 상태로 데이터가로드되면 실행되는 다른 기능이 있습니다. 가상 모드 및 페이징 또한 좋은 옵션입니다. 그리고 저는 100K 줄이 사람이 처리하기에는 너무 많은 점에 동의합니다. 자원과 노력의 낭비뿐입니다. 나는 이해. 나는 실제로 다른 사람의 응용 프로그램을 개선하려고합니다. 감사합니다.

관련 문제