Microsoft MVP성태의 닷넷 이야기
Listview 컨트롤의 화면 전환 시 갱신 속도 [링크 복사], [링크+제목 복사],
조회: 12018
글쓴 사람
박성원 (whenai at naver.com)
홈페이지
첨부 파일
 

C#으로 데이터를 취득하는 윈폼 프로그램을 제작 중에 있습니다.

무한루프로 아래와 같은 쓰레드 5개가 돌아가고 있습니다.

while(1)
{
             Thead.Sleep(1);
             Application.DoEvent();

            if(센서입력())
          {
                   //Listview 컨트롤에 센서 입력값 추가
                   AddItem(listviewControl, data);
           }

           if( 쓰레드멈춤Flag) break;
}

Listview는 쓰레드 별로 20개 가량 되므로 화면에도 100개 가량의 Listview 컨트롤이 탭 컨토롤에 올려져 있습니다.

문제는 데이터 갯수가 0~1000개 정도에는 상관 없는데.. 그 이상이 되면, 탭 컨트롤의 탭 페이지를 변경하는 것 만으로도

쓰레드에서 센서입력을 못 받는 경우가 발생하는 것 같습니다. 매번 그러는 것은 아니고 간헐적으로 딜레이되는 현상이 발생이

됩니다. 아마도 다른 탭 페이지 클릭 후 Listview컨트롤이 Redraw?? 할 때 새로 뿌려주는 건지 확실하지 않지만 그곳에서 딜레이가

생긴다고 의심 되는 사항인데요.

인터넷에서 검색을 해보았지만 데이터 추가에 대한 속도 개선(BeginUpdate,EndUpdate)에 대한 내용은 많으나,

이미 표시된 내용에 대한 Refresh나 Update 관련된 내용을 찾을 수가 없어 이곳에 질문을 남기게 되었습니다.

제가 궁금한 점은 이미 수천개의 데이터를 표시한 Listview컨트롤에 화면 전환 시 새로 그려주거나 표시되어져야 할 때 성능

향상할 수 있는 방법이 있는지 궁금합니다.


긴글 읽어주셔서 감사합니다.









[최초 등록일: ]
[최종 수정일: 2/14/2023]


비밀번호

댓글 작성자
 



2023-02-14 02시25분
스레드에서 센서 입력을 UI 업데이트 코드랑 분리하세요. 센서 입력을 받았으면 UI를 업데이트하는 별도의 스레드로 데이터를 전달하고 끝낸 다음 다시 센서 입력을 받는 식으로 하세요.

딱히, 재현되는 예제도 없으니 저도 더 이상 조언할 만한 것이 없습니다.
정성태

... 16  17  18  19  20  21  22  23  [24]  25  26  27  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
5355neska7/21/202014307안녕하세요 문의 드립니다 [1]
5354민성7/15/202016897안녕하세요 db연결 문자 보안 [2]
5353형성재7/14/202015600Visual Studio Setup Project에서 VC++2010재배포패키지설치 [4]
5352윤식7/10/202016244닷넷코어 빌드 시 runtimeconfig 파일을 없앨 수 있는지.. [4]
5351runr...7/2/202015894C# 에서 C++ dll 병렬 사용 [1]
5350홍성호6/29/202017378C++에서 정의된 구조체(공유메모리)를 C#으로 공유메모리에서 구조체 변환시 에러가 발생 합니다. [1]파일 다운로드1
5349jero...6/24/202014018logon credential provider 관련 문의드립니다. [1]
5348776/19/202014038시작하세요 C# 8.0프로그래밍 책에 대한 질문입니다. [8]
5347민성6/19/202014225안녕하세요 WPF Binding에서요 [1]
5346dimo...6/18/202015138Task.WhenAll() 메소드를 이용한 코드를 좀더 짧게 사용하고 싶은데 다른 표현이 있을까요? [3]
5345질문요6/12/202013768idc vs 집 속도 [2]
5344하태6/2/202015136c++ .ilb에서 c# dll 호출 질문 드리겠습니다 (콜백함수 전달) [4]
5343하태6/2/202018705안녕하십니까! c# dll을 c++ .lib에서 호출 질문 드립니다. [6]
5342진우5/30/202019267c++ 에서 C# DLL 사용 문의 [2]
5341미나리5/28/202015130스레드 lock키워드 관련 질문드립니다 [3]
5339민성5/27/202014274WPF cmd을 실행을 할때 파라미터 넘기는 방법 [1]
5338서영준5/26/202015915.Net Core Blazor 서버에 Xing API를 이용한 통신 요청 [5]파일 다운로드1
5337ogos...5/26/202016380C# DB connection string 보호 방법에 대하여 [2]
5336saki5/21/202016250이벤트 뷰어 .NET Runtime 오류 [3]
5335민성5/21/202013839안녕하세요 C#으로 컴퓨터 시작프로그램 목록을 가져와서 사용안함으로 바꿀려면 [1]
5334민성5/19/202014952안녕하세요 WPF 콘솔창을 띠우면서 Ping이라는 명령어가 콘솔에 Write되게 할려면 어떻게 해야 하나요?? [1]
5333초보5/18/202014310공유 메모리 관련 문의 [2]
5332질문요5/15/202014294TcpListener TcpClient 문의 [4]
5331sdd5/13/202014509안녕하세요 Settings관련하여 질문드립니다. [2]파일 다운로드1
5330하태5/7/202019490안녕하세요! 질문 드리겠습니다! C# dll에서 c++ CLR프로젝트를 참조 추가 할 수 있나요? [2]
5329김태령4/21/202014170젠킨스에서 원격 머신에 있는 실행 파일을 실행하면 백그라운드로 뜹니다 [2]
... 16  17  18  19  20  21  22  23  [24]  25  26  27  28  29  30  ...