2010-02-17 6 views
2

파일을 읽고 DataGridview에 행을 표시하는 C# win 양식이 있습니다. 모든게 잘 작동 .. 그리고 나는 그들이 읽고있는 것처럼 라인을 표시하기 위해 델리게이트와 인보 크를 사용한다. 또한 진행 막대를 보여주고 행 길이 계산과 같은 다른 작업을 수행하고 각 행에서 특정 필드를 추출하기 위해 행을 구문 분석합니다.WinForms Invoke/BeginInvoke

누군가가 이런 종류의 구현을 시도한 경우 궁금합니다. 현재 내 응용 프로그램은 3 분 (승 7 32 비트/셀러론 2.66Ghz/4 기가 바이트)에 거의 250MB 파일 (~ 12000 라인을 가지고) 읽습니다. 시간을 줄이는 것이 가능한지 궁금합니다. 구현 방식을 변경하여 더 많은 것을 좋아할 것입니다.

+2

파일을 어떻게 읽으십니까? – SLaks

+0

유용한 제안을 위해 구현 한 방법에 대한 세부 정보를 추가해야합니다. –

+0

데이터가로드되는 동안 DataGrid보기를 활성화해야합니까? 데이터가로드 된 후 로딩 메시지를 표시하고 바인딩을 만들 수 있습니다. 컨테이너 목록이 바인드되는 동안 데이터를 추가하는 것은 너무 느립니다. – Wilhelm

답변

1

좋아요 ... 나는이 질문을 매우 좋아합니다. 왜 사용자에게 250mbs의 데이터를 데이터 그리드에 표시하고 있습니까? 최종 사용자가 처리 할 수있는 방법이 없다면 그리드에서 250mbs의 데이터를 이해할 수 없습니다. 최종 사용자가이 기능에 대한 압박감을 느끼는 경우에는 "이것은 나쁜 생각"이라는 관점에서 해결해야합니다. 성능 문제는 대개 사용자를 교육하여 해결할 수 있습니다. :-D

+0

Answer 나는 이것을 시도하면서 얻었습니다. "왜 그것이 나쁜 생각이라고 말하는지 이해할 수 있습니다. 그러나 나는 여전히 그것을 원하며, 최고의 수행 능력을 가지고 싶습니다." – Wilhelm

+0

그래, 나중에 너는 그것을 변경하도록 요청 받게 될 것이다. – Achilles

3

글쎄, 당신은 이것에 대해 두 번째 생각을하는 것이 옳다. 톨스토이 (Tolstoy)의 War and Peace (전쟁과 평화)는 아마도 가장 힘든 내용 일 것입니다. 대략 50 만 단어가 있습니다. 당신이 화면에 버리는 것은 백 배나 더 많습니다. 이 정보를 화면에 표시하는 데 얼마나 오랜 시간이 걸릴지는 중요하지 않습니다. 사용자가 전체 화면을 스크롤 할 때까지 오래 걸릴 것입니다.

저는 개인적으로 목록에 50 개 이상의 항목을 넣을 것을 개인적으로 망설였습니다. 탑 100 개. 저쪽에, 그것은 인간을위한 투명한 고문이된다.

거기에 도달하려면 사용자가 콘텐츠를 필터링하고 점차적으로 관련 항목에 대한 거대한 결과 집합을 자세히 살펴보십시오. 정확히 무엇을보아야하는지는 당신의 질문에서 분명하지 않습니다. 조금 생각하면, 뭔가를 생각해 낼 것입니다.

0

먼저 전체 파일을로드하거나 표시 할 필요가 없습니다. 표시 할 부분을로드 할 수 있습니다. 그리드에서, 어차피 엔어 파일을 표시 할 수 없으며 화면이 너무 커야합니다. 표시 내용 만로드하고 (부드러운 스크롤을 위해 몇 줄을 더 추가해야 함) 사용자가 콘텐츠를 스크롤하면서 나머지를로드하십시오. 사용자는 파일이 부분적으로 만로드되었음을 인식하지 못합니다.

책을 논리적으로 그룹화 한 경우 금융 계량 응용 프로그램에서 계정 또는 기간별로 챕터를 표시 할 수 있습니다.

0

아마 VirtualMode 캔 같은 당신을하는 데 도움이 :

가상 모드 데이터의 매우 큰 상점으로 사용하도록 설계되었습니다. VirtualMode 속성이 true 일 때 설정된 행 및 열 수를 사용하여 DataGridView을 만든 다음 CellValueNeeded 이벤트를 처리하여 셀을 채 웁니다. 가상 모드에서는 사용자의 작업에 따라 DataGridView 셀의 채우기, 편집 및 삭제를 처리하기 위해 기본 데이터 캐시를 구현해야합니다. 가상 모드 구현에 대한 자세한 내용은 How to: Implement Virtual Mode in the Windows Forms DataGridView Control을 참조하십시오.

P. 성능 정보 : 프로파일 링 도구를 제외한 아무도 성능 관련 문제를 해결하는 데 도움이되지 않습니다.