메뉴 건너뛰기

라이온하트 2nd edition

홈페이지를 새롭게 리뉴얼합니다.

조회 수 113082 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

소스에 query, GridWorkList 선언부가 없어서 전체적으로 이해하지 못했지만,

데이터바인딩 시키는 부분을 쓰레드로 따로 처리하고 싶으시다 이걸로 생각되는데요,

 

쓰레드는 두가지 일을 동시에 하는 작업이라서 위와같이 메인쓰레드의 GridWorkList를

건드릴 경우 하나의 쓰레드가 다른 쓰레드의 작업을 방해할 수 있기 때문에

기본적으로 데이터바인딩 작업을 메인쓰레드에서 하시고, 님께서 쓰레드를 이용하여

동시에 하고자 하는 다른 작업을 별도의 쓰레드에서 하시는 것이 좋을 것 같습니다.

 

위와 같은 방식으로 하고자 하면 해당 바인딩 작업을 비동기식으로 처리하시는게 좋구요

DataGrid에서 BeginInvoke라는  메쏘드를 이용하여 다음과 같이 해보세요.

 

1. 델리게이트 선언

 

먼저 클래스 선언부에 델리게이트를 다음과 같이 선언하시구요..

모양은 님께서 필요하실데로 바꾸실 수 있지만 파라미터는 일단 두개로 해놨습니다.

 

public delegate void controlHandler(object Value, object Value2);

 

 

2. 핸들레 메쏘드 작성

 

두번째로 핸들러 메쏘드를 다음과 같은 형식으로 해주세요.

 

private void BindingHandler(object data1, object data2)

{

 

// 새로 생성된 쓰레드에서 작업할 내용

// 여기서 DataGrid 바인딩 작업을 함

 

}

 

3. 쓰레드로 작업을 시작할 함수 작성

 

쓰레드에서 호출할 메쏘드명이 list라 하면

 

private void list()

{

dataGrid1.BeginInvoke(new controlHandler(BindingHandler), new object[] {null, null});

}

 

이런식으로 코딩해주세요.

dataGrid1은 바인딩할 데이터그리드컨트롤이고 해당 컨트롤은 비동기식으로 실행하는

BeginInvoke메쏘드가 있습니다. 인수는 델리게이트와 파라미터를 요구하구요.

여기서는 직접적으로 파라미터는 필요없으니 null로 채웠습니다.

 

4. 쓰레드 시작

 

마지막으로 쓰레드를 생성하여 실행하고자 하는 곳에

 

   Thread Workstart = new Thread(new ThreadStart(list));
   Workstart.Priority = ThreadPriority.Lowest;
   Workstart.IsBackground = true;
   Workstart.Start();

 

를 코딩하여 쓰레드를 시작하시면 되겠습니다.

새로운 쓰레드의 우선순위를 정해주시고 IsBackgound를 true로 주시면,

메인쓰레드에 백그라운드로 실행되는 쓰레드이니,

메인이 종료되면 해당 쓰레드도 자동종료될겁니다.

가끔 쓰레드를 쓰다보면 메인쓰레드가 종료되어도 혼자서 남아있는 경우도 있거든요.

 

좀 복잡하시죠.

그러나 쓰레드를 제대로 쓰려면 이 정도의 노력은 감수하셔야 합니다.

 

정리해드리면,

 

1. 새로운 쓰레드에서 컨트롤을 마구 사용하면 안된다.

2. 해당 컨트롤 사용을 비동기식처리 메쏘드를 사용해야 한다.

3. 비동기식으로 처리하는 메쏘드는 델리게이트를 인수로 요구한다.

4. 델리게이트를 만들고 실행할 메쏘드를 만든다.

5. 새로운 쓰레드에서 컨트롤을 비동기식으로 실행한다.

 

혹 이해안가시거나 잘 안되면 쪽지주세요.


URL: http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040102&docId=65159002&qb=dGhyZWFkIGRhdGFncmlkdmlldyBjIw==&enc=utf8&section=kin&rank=2&search_sort=0&spq=0


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
105 C# MySQL to CSV && csv to mysql 3 LionHeart 2015.10.03 149080
104 Android Unity 타임 함수 badung007 2015.08.08 79103
103 금융개발 [링크] 수정주가와 갭 보정 LionHeart 2015.08.06 55380
102 Android Unity 코루틴 명령어 badung007 2015.08.06 84861
101 OS csv를 MySQL로 삽입 LionHeart 2015.07.27 63885
100 C# C#, Candle Stick 차트 (dotnet 4.5 framework) LionHeart 2015.07.06 107619
99 C# 표준편차 1 LionHeart 2015.07.01 74175
98 C# C#, JSON 이용 LionHeart 2015.06.25 121030
97 C# C#에서 SFTP 구현 LionHeart 2015.06.10 116305
96 OS sulinux APM 설치 (link) LionHeart 2015.06.03 86027
95 C# [링크] 키보드 잠그기 (후킹) LionHeart 2015.05.07 110192
94 C# 표준편차 (볼린저밴드 구현을 위한) LionHeart 2015.04.29 260557
93 Android Unity CameraReSize badung007 2015.04.10 75677
» C# [스크랩] C# 2.0 에서 DataGridview 로 멀티스레드 검색 LionHeart 2015.04.09 113082
91 OS MySQL 5.1.73의 Windows 및 Linux의 속도비교 1 file LionHeart 2015.03.05 70301
90 C# C# XML 쓰고 읽기 LionHeart 2015.02.10 225877
89 Information 아르바이트생이 갑자기 그만둔 경우 근로계약 위반에 해당하나요? LionHeart 2014.12.30 87466
88 Information 대법원 2005. 6. 10. 선고 2004다29934 판결 LionHeart 2014.11.28 67163
87 Information [동아일보] 죽음도 지울수 없는 ‘주홍글씨’… 지워야 산다 LionHeart 2014.11.14 88283
86 OS apache VirtualHost 마스터 LionHeart 2014.10.23 107514
Board Pagination ‹ Prev 1 2 3 4 5 6 7 8 9 10 11 12 Next ›
/ 12