none
스레드 Abort() 메서드 질문입니다. RRS feed

  • 질문

  • 스레드를 실행하다가
     
    thread.Abort()
     
    를 호출해서 강제종료하면 스레드는 강제종료되는데

    XXX(프로그램이름)에 문제가 발생했기 때문에 프로그램을 종료해야 합니다
    ...................
     

    이런 오류메시지가 뜨던데 이걸 안나오게 하는 방법 없나요??

    어려운 내용의 방법말고 일반적인 방법을 알고 싶습니다.

    Abort()메서드를 스레드를 강제종료하라고 만들어 놓고 저런 오류메시지가 뜨게 한다는 게 좀 이해가 안가네요.

    뭔가 대체 방법이 있을 것 같은데 답변 좀 부탁 드립니다.

    2012년 2월 10일 금요일 오전 7:49

답변

  • 질문 주신 내용이, 일반적인 상황은 아닌 것 같습니다. 제가 재현을 해보려고 쓰레드 생성 후, 일부러 Abort 를 호출해 봤지만 응용 프로그램까지 종료하지는 않았습니다.

    일단, .NET 2.0 부터 2차 쓰레드에서 예외가 발생하는 경우 응용 프로그램이 비정상종료하도록 되어 있긴 합니다. (그래도, Thread.Abort 의 경우에는 발생하지 않는데... 이상하군요. ^^)

    어쨌든, 2차 쓰레드에서의 예외로 인해 프로그램 강제종료현상을 막기 위해서는 app.config 에 다음과 같은 옵션을 추가해 주어야 합니다.

    <configuration>
      <runtime>
       <legacyUnhandledExceptionPolicy enabled="1" />
      </runtime>
    <configuration>

    혹시... 말씀하신 그런 현상이 재현되는 '간단한 소스 코드'를 얻을 수 있을까요? 개인적인 호기심으로, 재현을 해보고 싶어서 그렇습니다.

    • 답변으로 표시됨 mrsoo 2012년 2월 10일 금요일 오후 2:25
    2012년 2월 10일 금요일 오전 8:47

모든 응답

  • 질문 주신 내용이, 일반적인 상황은 아닌 것 같습니다. 제가 재현을 해보려고 쓰레드 생성 후, 일부러 Abort 를 호출해 봤지만 응용 프로그램까지 종료하지는 않았습니다.

    일단, .NET 2.0 부터 2차 쓰레드에서 예외가 발생하는 경우 응용 프로그램이 비정상종료하도록 되어 있긴 합니다. (그래도, Thread.Abort 의 경우에는 발생하지 않는데... 이상하군요. ^^)

    어쨌든, 2차 쓰레드에서의 예외로 인해 프로그램 강제종료현상을 막기 위해서는 app.config 에 다음과 같은 옵션을 추가해 주어야 합니다.

    <configuration>
      <runtime>
       <legacyUnhandledExceptionPolicy enabled="1" />
      </runtime>
    <configuration>

    혹시... 말씀하신 그런 현상이 재현되는 '간단한 소스 코드'를 얻을 수 있을까요? 개인적인 호기심으로, 재현을 해보고 싶어서 그렇습니다.

    • 답변으로 표시됨 mrsoo 2012년 2월 10일 금요일 오후 2:25
    2012년 2월 10일 금요일 오전 8:47
  • SeongTae Jeong 님 답변에 감사 드립니다.

    그런데 어제는 지속적으로 나타나서 이게 Abort() 호출했을 때 일반적으로 나타나는 현상인 줄

    알았는데 오늘 다시 면밀하게 해보니까 가끔씩 이런 현상이 일어나더군요.

    이게 Socket 를 생성한 코드라 스레드를 종료할 때 여기서 문제가 생겨서 일어나는 현상 일 수 있다는 생각이 듭니다.

    님 말씀대로 Abort()호출에 의한 것은 아닌 것 같습니다.

    다시한 번 좋은 정보 감사 드립니다.

    2012년 2월 10일 금요일 오후 2:25
  • 안녕하십니까? mrsoo 님,

    Microsoft TechNetForum 사이트를 방문해 주셔서 감사합니다.

    SeongTae Jeong님 답변 감사드립니다.

    mrsoo님 SeongTae jeong님의 답변이 도움이 되셨다니 다행입니다. 차후에도 문의 사항이 있으시면 언제든지 저희 Forum을 이용해주시길 바랍니다.

    2012년 2월 13일 월요일 오전 8:53
    중재자