Queue<Task> 사용 목적 : api 이용시, 과도하게 Transaction(Tr)을 요청하면 서버 과부하로 block되게 됨. 

                                  이를 방지하기 위해, Thread.Sleep을 이용하여 일정 시간의 delay를 주고자함. 

                                  (멀티 쓰레드 이용)

 

* 사용방법

1. Queue<Task> 생성

2. Task를 처리할 thread 만들 준비. (taskWorker라 이름하였음.)

 

 

 

TaskWorkerReady() 라는 함수를 만들겠음. (task 스펠링 오류)

Run()이라는 함수를 만들겠음. 

이 두함수를 Form이 초기화? 될때 동작하도록 함. 

 

 TaskWorkerReady() 함수 내용

taskWorker를 생성함. 

 

Log는 임의로 만든 함수. 무시. 

while 무한반복

 

만들어둔 Queue에 Task의 개수>0 일때

 

큐에서 꺼내서 동기적으로 실행하라. 

 

지정한 시간(delayTime) 만큼만 멈춰라. 

 

더이상 처리할 일이 없으면 0.1초간 자라. (일이 없으면 계속 자는 효과~~)

 

 

 

 

 

Taks를 전달하여 큐에 넣는 함수. (매개변수로 delayTime을 그때 그때 설정 하려고 함.)

 

 

 

Form이 초기화 될때, taskWorker를 Start 시킴. 

그냥  

 

 

 

 

 

그냥 이렇게 바로 Form1이 생성될때 taksWorker.Start() 해도 될 터인데???????

 

 

 

api에 트랜잭션을 요청할 함수를 만들어 둠. 

taks 형태로 함수를 만들고, 

 

 

 

Queue에 Task를 넣음. 

 

 

delayTime을 매개변수로 사용하여 임의로 조정하고자 함. 

 

 

 

 

 

 

 

 

Log() 함수가 에러 발생하지 않도록, 

Log() 함수에 작업을 해줌. 

 

this.Invoke ~ 부터

{

    // 기존에 있던 명령 부분.

}));   까지.

+ Recent posts