Creative Commons License

Community

공지/뉴스
지식공유
질문/답변
자료실
자유로운 글
방명록

공유를 넘어 교류로... 제가 알리는 말씀 및 사이트 이용자들이 함게 참여하는 커뮤니케이션 공간입니다.

.

질문/답변

개발 중 막히셨나요?? 여기 먼저 경험한 개발자들의 답변을 부탁드려보세요~ 단, 질문의 내용은 되도록이면 아주(?) 상세히 해 주셔야 합니다

backgroundworker를 다중으로 이용을 할라면...???

작성자 연습생
작성일 2008-07-14 오전 11:58:03,    조회수 : 2591

 안녕하세요~~~ 무더운 날씨네요~~

 TEST를 하는 프로그램은 폼1에서 폼2를 띠우면서 폼2객체를 새로 생성을 하기 때문에 폼2 버튼이벤트에

backgroundWorker1.RunWorkerAsync(); <<<< '비동기화를 시작 '

요것을 넣어도 문제가 되지를 않았습니다...

그런데... 지금 구성을 할려는 것은

폼1과 폼2가 있으면 폼2에서 스트링배열의 문자를 주면(3번에 나눠서 주면) 폼1에서 문자열을 그리드에 뿌려주는것

입니다. 폼1에서 데이터를 받는 메소드에 그리드에 뿌려주는 코드부분이 있었는데 이것을 메소드로 만들면서 이

부분을 backgroundworker를 이용하여 데이터는 받고 그리드에 뿌려주는작업은 따로하고... 이것을 할려고 했는데..

데이터 받는 부분에 backgroundWorker1.RunWorkerAsync();를 넣으면서 비동기화를 할려고 했는데...

데이터는 계속 들오니.. backgroundWorker1가 또 호출되면 상황이 발생되면서 에러가 뜨더라구요...

backgroundWorker1가 사용중이라면서...

훔.... 이럴때는.. 어떻게 해야... 할까요.....

backgroundWorker를 더 만들어 놓고 backgroundWorker1이 사용중이면 backgroundWorker2가 실행되도록..

만들어야 할까요??? backgroundWorker를 동적으로 줄었따 늘었따 하고 싶은데....

backgroundWorker가 늘면.. 거기에 따른 이벤트들(DoWork)도... 만들어 나야할꺼 같은데....

(멀티스레드의 예제를 보면... 그냥 스레드 객체를 한개 더 만들던데.....

그럼... 천개를 스레드할라면.... 1000개의 코드(스레드)를 생성을 해놔야 하나요???)

첨부파일을 올릴려고 했는데 외부컴퍼넌트를 이용하는거라 ㅠㅜ

이럴때는... 어떻게.... 처리를 할까요;;;

∵Commented by 박종명 at 2008-07-14 오후 1:07:20  
문제해결을 위해서 설계를 변경해야 할 필요도 있어 보입니다. 어떤 규모의 프로젝트를 구축하시는지는 잘 모르겠지만 동시에 실행되는 쓰레드가 1000개나 있어야 할 필요가 있는지요?
해당 소스와 구현하시고자 하는 목적을 알려 주셔야 정확한 답변이 가능합니다.
∵Commented by 연습생 at 2008-07-14 오후 1:47:16  
소스는 컴퍼넌트가 셋업이 안되있으면 안되기 때문에;;;
컴퓨터간의 통신을 구현을 할려고 하는 부분인데 Connect나 Datain, Disconnect부분은 컴퍼넌트를 이용을 하기때문에 손을 쓸 필요가 없는데.. Datain하는 부분에 부하를 줄이고 시간도 줄이기 위해 스레드를 세워서 Data는 계속받으면서 그리드에 뿌려주는 작업을 스레드를 세울려고 하는데... 1000개가 필요하다는것은.. 만약에 1000명이 접속을 할때는 가정이었어요..^^*
∵Commented by 박종명 at 2008-07-14 오후 2:08:36  
네.. 내부구조를 자세히는 모르겠지만.. 1000명이 접속해도 하나의 쓰레드에서 처리하면 안되는 구조인가요? 소스를 볼 수 없으니 자세한 답변을 드리지는 못하겠네요 ^^;
참고로 쓰레드가 많이 생기면 그 만큼 시스템 부하도 증가한다는 것만 기억해 주세용~~
∵Commented by 연습생 at 2008-07-14 오후 3:50:16  
하나의 쓰레드에서 처리한다는것은... 동기화를 하는거죠@@? 비동기화가 아니궁....
아닌가.... 쓰레드는... 보면 볼수록... 헷갈리니;;;; 첫번째 데이터가 들왔을 때 한개의 스레드가 세워지고... 두번째 데이터가 들오면.. 다시 한개의 쓰레드를 세우는게..멀티 쓰레드라들었는데..쓰레드가 한개이면 첫번째데이터를 처리하는중에 두번째 데이터를 처리해줄라면..첫번째 데이터의 처리작업이 끝나야..두번째 데이터의 처리작업을 하죠...소스를 간단히..만들어볼께요..
∵Commented by 박종명 at 2008-07-14 오후 3:53:45  
그렇죠. 그 쓰레드 내에서는 동기처리가 되는거죠..
그렇지만 메인 쓰레드와는 별도의 백그라운드에서 실행되기 때문에 프로그램의 사용 자체가 블럭되지는 않지 않겠냐는 말씀을 드릴려구 했어요..
그래서 내부구조나 목적을 알아야 정확히 설계를 할 수 있겠다 시퍼서요 ^^;
님께서 아시는 것이 정답입니다..
이름
비밀번호
홈페이지
GY <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요