메뉴 건너뛰기

라이온하트 2nd edition

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

조회 수 113066 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
125 OS httpd ntsysv 등록 LionHeart 2015.12.28 61531
124 OS [스크랩] bind 9.8.x 설정방법(설명 자세함) LionHeart 2015.12.13 91705
123 OS [스크랩] fdisk로 파티션 삭제하기 LionHeart 2015.12.07 101693
122 Information [스크랩] PHP 쓰레드 흉내내기 LionHeart 2015.12.02 90981
121 Information 관련기사 및 블로그 포스팅 등등 LionHeart 2015.11.24 69153
120 OS CentOS 7 firewall 설정 LionHeart 2015.11.22 69298
119 OS CentOS 7 minimal server 설치기(최소설치) LionHeart 2015.11.22 112019
118 OS [PostgreSQL] DB 덤프 & 복구 1 LionHeart 2015.11.21 66259
117 Information 도메인 가격비교 LionHeart 2015.11.11 60582
116 Information 동영상 자막, 뱁션 LionHeart 2015.11.07 92898
115 OS Centos 7 Run level 변경방법 1 LionHeart 2015.11.05 71396
114 OS Centos 7, MariaDB RPM 설치 file LionHeart 2015.11.03 70009
113 C# JSON.net dll download URL LionHeart 2015.10.29 78030
112 C# [스크랩] c# binary 파일을 사용해 csv 파일 빨리 읽기 LionHeart 2015.10.22 77078
111 C# C# 상관계수 (Correl 함수) 구현 LionHeart 2015.10.20 107317
110 OS [스크랩] Centos 7 방화벽 관련자료 LionHeart 2015.10.16 66768
109 OS [스크랩] 리눅스에서 ip 명령어로 IP 설정하는 방법 LionHeart 2015.10.16 64189
108 OS Centos 7에서 APM 설치 1 LionHeart 2015.10.16 65822
107 C# [스크랩] C# 에서 XML 특정 하위노드 및 자식노드를 좀 간단히 읽어보기 LionHeart 2015.10.08 111587
106 C# [스크랩] XML 다루기 - REST 데이터 받아서 처리하기 LionHeart 2015.10.08 96631
Board Pagination ‹ Prev 1 2 3 4 5 6 7 8 9 10 ... 12 Next ›
/ 12