Thread.Abort () 사용시 문제
그래서 나는 당신이 사용하는 안다고 압니다.
Thread.Abort()
그러나 나는 좋은 설명을받은 적이 없다. 성능 또는 숨겨진 문제가 있습니까?
나는 당신이 ThreadAbortException을 무시하거나 삼킬 수 있음을 안다.
여기에있는 다른 모든 좋은 답변 외에도 Thread.Abort에 대한 호출이 실제로 행사를 중단 할 보장이 있고 점을 추가하겠습니다. 중단되지 않는 것이지만 "강화"하는 것이 가능합니다. 예를 들어, 적대적인 코드를 실행 가능하다고 적대적인 코드를 중단하는 경우 적대적인 코드는 자체 파괴에 저항 할 수 있습니다.
자신이 소유하지 않는 코드 가 자체 프로세스 에 배치하는 것 입니다. (그리고 가급적이면 해당 프로세스의 보안이 매우 취약합니다.) 그러면 프로세스를 완전히 종료 할 수 있습니다.
요컨대, Thread.Abort는 기껏 잘못된 설계, 아마도 수없고 매우 위험하다는 것을 나타냅니다. 어떤 대가를 치르더라도 피해야합니다. 일시 중단을 일시 중지하는 유일한 경우는 가능한 한 깔끔하게 appdomain을 해체하려는 경우 "비상 종료"코드입니다.
확실한 상태에있을 수있는 안전한 상태에 통신을 준비하고 있습니다.
잠금을 취소하고 공유 상태를 가져와 일부 공유 상태를 변경하는 중일 수 있습니다.
자신을 다치는 것이 더 자신을 소유합니다. 유출 된 사람들이 발생하는 것으로 코드에서 예외가 발생하며 발생합니다. 어떤 사람들은 견적을 예상하고 어느 시점에서든이 예외를 우아하게 처리하는 방식으로 코딩 괜찮을 수 있습니다.
Monitor.Enter(obj);
// some code - if exception is raised here, then the lock isn't released
Monitor.Exit(obj)
IDisposable someCriticalResource = GetResource();
// some code - if exception is raised here, then the object isn't disposed
someCriticalResource.Dispose();
또한 좋은 코드 리뷰가없는 한 팀에서 많은 사람들과 함께 작업하는 경우 작업 할 코드의 품질을 보장 할 수 없습니다. 따라서 그것은 사람들이 발생하는 예외에 대한 강력 쓰기 코드에 기억에 도착하는 것보다 "아니오 Thread.Abort ()"의 gospal 전파하는 좋은 아이디어입니다 어디 그 코드 내가 .
간단히 말해서. IDisposable 개체는 없습니다. 잠긴 개체는 잠금 해제 할 수 없습니다. 100 % 수행해야하는 모든 작업은 수행되지 않습니다.
다른 사례에서 Thread.Abort ()를 호출하면 해당 흐름에 ThreadAbortException이 생성됩니다. 운이 좋으면 코드 가이 문제를 잘 처리하고 잘 정의 된 상태에서 중단됩니다. 문제는 당신이 모든 경우에 운이 좋을지 알 수있는 방법이있는 것입니다. 따라서 Thread.Abort를 다른 방식에서 호출하는 것보다 안전을 선호한다면 좋은 생각이 아닙니다.
Thread.Abort는 제어되지 않는 방식으로 중지합니다. 스레드를 중지합니다.
그에 대한 문제 : 대부분의 경우 수행중인 작업을 중지하려고합니다. 예를 들어, ACID 작업을 실행하는 경우 종료하기 전에 현재 작업을 완료하여 시스템이 안정된 상태로 유지 가능 할 수 있습니다.
Thread.Abort는 대상에서 예외를 발생시키는 대상입니다. 그 동안 중요한 대상은 몇 가지 중요한 작업을 수행 할 수 있고 예외가 발생하면 애플리케이션 상태가 수 있습니다.
참고 URL : https://stackoverflow.com/questions/1559255/whats-wrong-with-using-thread-abort
'ProgramingTip' 카테고리의 다른 글
byte []를 Byte []로 변환하는 방법과 그 반대의 방법은 무엇입니까? (0) | 2020.11.27 |
---|---|
SonarQube와 SonarLint의 차이점 (0) | 2020.11.27 |
C # RegEx : 대소 문자 무시… 패턴? (0) | 2020.11.27 |
SQL-Server에 백분율 값을 저장하는 가장 좋은 방법은 무엇입니까? (0) | 2020.11.27 |
.Net에서 개발 한 Windows 서비스 설치 오류 (0) | 2020.11.27 |