티스토리 뷰
아래 코드에 어떤 문제가 있을까요.
private System.Windows.Forms.ListView lvData;
private void ReceiveItems(object sender, PublisherEventArgs e)
{
Invoke(new MethodInvoker(delegate()
{
try
{
WriteLog("[" + DateTime.Now.ToString() + "] " + e.eventData);
List<StockData> collection = new List<StockData>();
lvData.BeginUpdate();
ListViewItem item;
foreach (string s in sTokens)
{
// do something..
}
lvData.EndUpdate();
}
catch(Exception ex)
{
WriteLog( ex.Message.ToString());
}
}));
}
listview가 update될때 beginUpdate()를 호출하고 endUpdate()를 호출 전까지 화면그리기를 중단하도록 합니다. 이유는 컨트롤에 데이터 업뎃이 한번에 깔끔하게 되기위해서 이런 구조를 쓰는데요..
exception발생시 EndUpdate()를 호출하지 못하는 상황이 발생합니다.
한번 이렇게 꼬여버리면 다음번에 정상적으로 해당 함수들이 호출된다 하더라도 listview는 더이상 정상적으로 작동하지 않게 됩니다. -화면상에 보이지 않게 되는거죠.-
그럼 어떻게 해야할까요?
네.. 아래와 같이 finally구문을 사용하는게 일반적인 방법이 되겠습니다.
private System.Windows.Forms.ListView lvData;
private void ReceiveItems(object sender, PublisherEventArgs e)
{
Invoke(new MethodInvoker(delegate()
{
try
{
WriteLog("[" + DateTime.Now.ToString() + "] " + e.eventData);
List<StockData> collection = new List<StockData>();
lvData.BeginUpdate();
ListViewItem item;
foreach (string s in sTokens)
{
// do something..
}
// lvData.EndUpdate();
}
catch(Exception ex)
{
WriteLog( ex.Message.ToString());
}
finally
{
lvData.EndUpdate();
}
}));
}
try ~ catch구조에서 꼭 실행되어야만 하는 구문은 finally에 넣는 것 정도의 코딩습관을 들이는게 바람직하지 않을까요?
'개발' 카테고리의 다른 글
c# if 문 or 연산 중복 제거하기 (0) | 2017.07.12 |
---|---|
64bit 컴퓨터에서 32bit 오라클 OLEDB 드라이버 로드하기 (0) | 2016.06.10 |
MS-SQL Linked server( DB-LINK) 설정 (0) | 2014.07.29 |
VS2010 에서 Dialog 클래스 생성후 가상함수 재정의시 (0) | 2013.06.03 |
Windows7에서 Graphspy (0) | 2013.05.29 |
- Total
- Today
- Yesterday
- 마곡지구
- 장기전세
- 아쿠아스카이
- Mpow
- 오토씽
- NAS
- 산세베리아
- 수초어항
- 램즈혼
- 캠핑
- 금연
- ADO
- 쿠바펄
- 챔픽스
- 루드위지아 오발리스
- 소설
- ixus75
- 하이그로필라
- 미에어2
- 시내랑
- 루드위지아
- C/C++
- 레인보우샤크
- 133인치
- 노랭이새우
- 네온테트라
- 미니헤어그라스
- 편도수술
- 채리새우
- simpleAdo
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |