안녕하세요?

 

이번 포스팅에서는 지난번에 너무 길어서 끊었던 지점부터 이어서 작업을 하는 모습을 보여줄 것인데, 여기서 마지막에 결론이라면 결론이 하나 나오기는 나왔습니다. 아무튼 간에 이 결론에 이르는 과정을 한번 보여드릴까 합니다.

 

먼저 위 스크린샷처럼 메인 스레드라고 해야 할까요? 일단 여기서 신호를 받게 되면, 그 신호를 받아서 우선은 유용하게 프로그레스 바를 정리할 수 있도록 만들어 주도록 합니다.

 

그 다음으로위 스크린샷과 같이 현재 상황을 알려주기 위한 신호를 송출하기 위한 메서드도 한번 작성을 해 보도록 합니다. 물론 위치는 바로 Worker에 설치를 해 주어야 합니다.

 

그리고 나서 당연하다면 당연하게도 원래는 프로그레스 바를 가지고 작업을 하던 곳에서 원래 코드를 주석처리하고, 대신 신호를 발사하기 위한 메서드를 설치해 주도록 합니다.

 

그리고 나서 메인이 되는 클래스에서는 위스크린샷과 같이 신호가 왔으면, 이 신호를 받아서 일일히 메서드와 연결을 시켜 주도록 합니다.

 

 

그리고 나서 해당이 되는 메서드에서 위 스크린샷과 같이 프로그래스 바를 설치해 주도록 합니다. 이렇게 하는 것으로 일단 작동은 되리라 생각은 했습니다.

 

그리고 Worker스레드에서 있는 마지막 신호를 송출하기 위한 곳에서는 위 스크린샷에서 볼 수 있는 것과 같이 일단 바꾸어 보도록 합니다.

 

그리고 나서 이게 메인 스레드에 신호가 도착하게 되면, 작동을 하게 될 메서드를 작성해 주도록 합니다. 이렇게 하는 것으로 일단 작업이..........

 

완료된게 아니라 하마터면 위 스크린샷처럼 신호가 방출이 되면, 어디서 어떻게 하라는 식으로 작동하는 것을 잊어먹을 뻔 했습니다. 이렇게 마지막까지 다 하도록 합니다.

 

그리고 나서 위 스크린샷에서 볼 수 있는 것처럼 일단 작동을 시켜 보기는 보았는데, 문제는 부차적으로 잡으려고 했었는 UI는 제대로 작동을 하지 않았습니다.

 

그리고 나서 위 스크린샷에서 나오는 것처럼 일단 결과를 얻기는 얻었습니다. 하지만 멀티 스레드를 사용해서 나오는 심각한 문제점이 하나 있습니다.

 

제가 구상한 것처럼 제대로 작업이 동시에 진행이 되지 않았고, 그냥 하나의 작업이 끝나야 - 즉 한개의 조건에서 모든 종목을 계산하고 나서 다음 조건이계산이 된다는 것 입니다. 하나하나 차례대로 작업을 하기에는 하나의 조건에 걸리는 시간이 길기 때문에 이렇게 할 수는 없습니다. 그래서 내리는 결론은 멀티 스레딩을 이용해서는 제가 원하는 식으로는 작업을 할 수 없다는 것 입니다.

+ Recent posts