NGMsoftware

NGMsoftware
로그인 회원가입
  • 커뮤니티
  • 질문과 답변
  • 커뮤니티

    지식인! 질문에 답변을 달면 포인트가 지급됩니다.

    질문과 답변

    지식인! 질문에 답변을 달면 포인트가 지급됩니다.

    질문에 대한 답변을 3일안에 채택하지 않으면, 자동으로 첫번째 답변자가 채택되고 포인트는 100점이 차감됩니다.

    에디터 스크립트 기능을 사용중 스레드가 중단되었다는 에러가 뜹니다

    페이지 정보

    본문

    [오른쪽판단용.ngs] 스크립트가 시작되었습니다.

    [연결] 액션이 시작되었습니다.

    [COM5] 시리얼 포트에 연결되었습니다.

    [키 업] 액션이 시작되었습니다.

    [키 코드] LEFT

    [끊기] 액션이 시작되었습니다.

    [COM5] 연결이 해제 되었습니다.

    [지연] 액션이 시작되었습니다.

    [스크립트 중지[오른쪽으로 공격]] 액션이 시작되었습니다.

    [오른쪽으로 공격] 스크립트는 실행중이 아닙니다. 스크립트를 중지할 수 없습니다.

    스크립트 경로: 오른쪽으로 공격.ngs

    [지연] 액션이 시작되었습니다.

    [스크립트 실행[왼쪽으로 공격]] 액션이 시작되었습니다.

    [왼쪽으로 공격.ngs] 스크립트가 시작되었습니다.

    스크립트 경로: 왼쪽으로 공격.ngs

    [왼쪽으로 공격.ngs] 스크립트가 중지되었습니다.

    Error

    ======================================================

    스레드가 중단되었습니다.

    ------------------------------------------------------------------------

    [오른쪽판단용.ngs] 스크립트가 완료되었습니다.

    [오른쪽판단용.ngs] 스크립트가 시작되었습니다.

    [연결] 액션이 시작되었습니다.

    [COM5] 시리얼 포트에 연결되었습니다.

    [키 업] 액션이 시작되었습니다.

    [키 코드] LEFT

    [끊기] 액션이 시작되었습니다.

    [COM5] 연결이 해제 되었습니다.

    [지연] 액션이 시작되었습니다.

    [스크립트 중지[오른쪽으로 공격]] 액션이 시작되었습니다.

    [오른쪽으로 공격] 스크립트는 실행중이 아닙니다. 스크립트를 중지할 수 없습니다.

    스크립트 경로: 오른쪽으로 공격.ngs

    [지연] 액션이 시작되었습니다.

    [스크립트 실행[왼쪽으로 공격]] 액션이 시작되었습니다.

    스크립트 경로: 왼쪽으로 공격.ngs

    [오른쪽판단용.ngs] 스크립트가 완료되었습니다.

    [왼쪽으로 공격.ngs] 스크립트가 시작되었습니다.

    [COM5] 시리얼 포트에 연결되었습니다.

    [키 코드] LEFT

    [키 코드] LEFT

    [키 코드] LEFT

    [왼쪽으로 공격.ngs] 스크립트가 완료되었습니다.


    10번에 5번 2번에 한번꼴로 에러가 나는데 뭐가문제일까요
    사용하는거는 
    스크립트 중단
    스크립트 실행 (비동기)
    사용하고있습니다
    아두이노 사용중입니다

    ps. 개발자님에게 1대1문의 넣었는데 다같이 보시는게 좋을거 같다면서 여기 게시판에 해두면 답변달아주신다고 해서 올렸습니다
    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

      채택답변
    profile_image

    엔지엠소프트웨어님의 댓글

    엔지엠소프트웨어 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일 Date

    표시를 에러라고 하고 있지만... 사실은 강제 종료가 되면서 윈도우에 에러 코드를 넣도록 내부적으로 구현되어 있습니다.
    윈도우 시스템상 실행중인 스레드를 종료하려면 해당 스레드가 작업을 완료할때까지 기다려야합니다^^;
    하지만, 스레드가 오랬동안 계속 종료하지 못하고 실행되고 있으면 일반적으로 말하는 응답 없음 상태에 빠지게 됩니다.
    이는 마이크로소프트가 안전한 스레딩 기술을 구현하기 위해 의도한 디자인입니다.

    하지만, 매크로 특성상 어떤 작업이 언제 어떻게 종료될지... 아무도 모르면 스크립트를 에측해서 작성하기가 상당히 까다로워집니다.
    원하는 시점에 서브 스크립트나 타이머, 스케줄러들이 종료되어야 함에도 불구하고 몇초 또는 몇분 지속되면서 클릭하거나 키보드 입력을 하면 안돼기 때문입니다.
    개발자들 사이에서도 멀티 스레딩 기술은 최고 난이도의 기술입니다. 대부분은 멀티 스레딩을 개발할때 사용조차 안합니다.
    원론적으로 멀티 스레딩 환경에서 비정상 종료되면, 해당 스레드가 사용하는 메모리가 해제되지 않거나 행 또는 락으로 인해 여러가지 문제를 야기시킵니다.

    그래서, 윈도우에게 스레드를 강제로 종료한다고 알리고 비정상 종료 이벤트를 받아서 해당 스레드에서 생성한 메모리를 순차적으로 릴리즈 시킵니다.
    즉시 종료하기 위한 방법을 택한것일뿐입니다. 참고로, 정상 종료되고 메모리가 릴리즈되면 에러라는 메시지를 표시하지 않습니다.
    즉시 종료할 수 없는 상황이라면 강제로 종료하고 윈도우에게 에러 코드를 던져주는 루틴이기 때문에 표시되는 메시지일뿐입니다.