NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    Error Java - Timer already cancelled.

    페이지 정보

    본문

    HSMS SECS 데이타를 주고 받는 인터페이스를 개발하던중~ "Timer already cancelled."와 같은 에러를 만났습니다. 기본적인 테스트인 Connected와 LinkTest는 정상적으로 통과가 되었지만, 장비 PM이나 예상하지 못한 에러 또는 오프라인으로 연결이 끊어질 수 있습니다. 장비와 서버가 연결되어 있는지 체크하는 로직을 타이머로 구현했는데요. C#에서는 타이며 인스턴스(Instance)를 생성한 후 Enabled 속성을 True 또는 False로 시작하거나 중지할 수 있습니다. 자바도 타이머를 사용하는데 schedule과 cancel로 동일하게 사용할 수 있어요. 그런데~ 자바는 cancel 후 다시 schedule하면 에러가 발생합니다.

     

    타이머를 여러개 써서 코드를 다 바꿔야겠네요-_-; 아래와 같이 타이머를 초기화할 수 있는 메소드로 처리해야 합니다.

    private tmrT5;
    
    private static void StartTimerT5() {
    	tmrT5 = new Timer();
    	tmrT5.schedule(new TimerTask() {
    
    		@Override
    		public void run() {
    			ClientResult result = null;
    			try {
    				result = client.Start();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    			if (result == ClientResult.OK) {
    				tmrT5.cancel();
    				StartTimerT5();
    			} else {
    
    			}
    		}
    
    	}, 10000, 10000);
    }

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.