.Net FrameWork,VB.Net |
AddressOf | Threading.Thread
앞페이지에서 하였던 건중에 AddressOf 라고 하는 것
이것이 도대체 개체냐, 메소드냐, 속성이냐 , 멍하게 하였을 것이다
이것은 개체도 아니고,메소드도 아니고, 속성도 아니고 연산자(Operator)이다
표현식에서 +,-,=,/ ,and, or 등과 같이 연산자이다
그런데 어떤 연산자인가???
프로시져의 주소를 참조하겠다는 연산자인것이다
프로그램이 돌아가다가, 어떤 조건에 맞을때 이 프로시져를 실행(Implementing)하겠다고
지정(Pointing) 혹은 참조(Referencing)..뭐 용어가 각각이라서 헷갈릴뿐..
프로시져의 메모리 위치를 알려 주는 역할인 것이다
Lambda 표현식으로 Inline상에서 프로시져를 작성하여 사용하던가
아니면 별도의 프로시져를 AddressOf 연산자로 지정하던가 둘중의 하나다
AddressOf, Delegate를 알아야 VB.Net를 적극활용하는 것중에
Threading의 Thread개체가 있다
Thread는 여러분이 게시판 같은 곳에 하나의 토픽을 넣으면 다른 사람들이
관련하여 댓글을 줄줄이 붙여 나간다면 이것이 하나의 Thread이다
은행에서 하나의 창구에서 번호표를 받아서 업무를 진행한다면 이것도
하나의 Thread 인것이다
VBA에서 어떤 시간이 소요되는 순환문을 돌린다면
이것이 끝날때까지 다른 작업을 할수 없다
마우스도 꼼짝않고, 범위를 선택할수도 없고, 다른 작업은 올스톱이다
이것이 하나의 Thread 인것이다
그래서 VBA에서는 DoEvents를 제공하여 다른 작업을 좀 실행할수 있게 해준다
VB.Net에서는 개발자가 완전히 다른 Thread를 만들어서
공동작업을 자연스럽게 해준다
그것을 위하여 아래와 같이 Threading네임스페스의 Thread개체를
생성하는 New 메소드에서 매개변수로 Delegate를 요구하는 것..
아하..Delegate의 개념을 모르면 많은 자원을 써먹을수 없구나!!
아래의 그림과 같이 버튼 3개 텍스트상자 하나 만들어 넣고
첫째버튼에서는
일반적인 방법으로 진행하게 하고
다른 버튼에서는 별도의 Thread개체를 만들어서 해보면
별도의 Thread의 작업진행중에는 다른 버튼을 크릭해도 되고
다른일이 진행중인것에 방해받지 않고 작업을 할수 있음을 알게 된다
아래 화일 모듈에 설명을 잘 보시면서
Thread를 이해하시기 바랍니다
은행의 창구를 하나 더 별도로 신설한것과 같은 작업이 가능합니다
이것을 잘 활용해야 VBA능력에 또 다른 파워를 얻게 된다
***[LOG-IN]***
Thread 를 3개를 사용해 보자
그리고 Thread를 실행하다가, Thread를 해제 할때는 Abort메소드를 사용한다
Join메소드는 어떤 역할을 하는지도 아래화일에서 보시도록..
***[LOG-IN]***