본문 바로가기
C#

12# 최선의 안정성 구현 방법

by NaHyungMin 2017. 10. 13.

오늘 서버에서 SynchronizationLockException 오류가 나서 찾아본 결과

Moniter 클래스에 Exit를 사용할 경우 다른 쓰레드에서 호출이 되면 안된다.


마이크로소프트에서 추천하지 않는 코드 방법


종료자가 실행되지 않더라도 종료자를 주의 깊게 확인하여 중요한 운영 체제 리소스가 누수되지 않는지 확인합니다. 응용 프로그램이 안정적인 상태에서 실행되거나 SQL Server와 같은 서버가 종료되는 시점의 일반적인 AppDomain 언로드와 달리 갑작스런 AppDomain 언로드에서는 개체가 종결되지 않습니다. 응용 프로그램의 정확성을 보장할 수 없지만 리소스 누수를 막아 서버의 무결성을 유지해야 하므로 갑작스런 언로드의 경우 리소스가 누수되지 않는지 확인합니다. 운영 체제 리소스를 해제하려면 SafeHandle을 사용합니다.

finally 절은 항상 CER 외부에서 실행되는 것은 아니므로 라이브러리 개발자는 관리되지 않는 리소스를 해제하기 위해 finally 블록 내부의 코드에 의존해서는 안 됩니다. 권장되는 해결 방법은 SafeHandle을 사용하는 것입니다.




참고 


최선의 안정성 구현 방법

https://msdn.microsoft.com/ko-kr/library/ms228970(v=vs.110).aspx


Monitor 관련

https://msdn.microsoft.com/ko-kr/library/system.threading.monitor.exit(v=vs.110).aspx

'C#' 카테고리의 다른 글

13# C#에서 미국 광고 Fyber 처리  (0) 2018.02.22
13# 리스트 제네릭 함수  (0) 2017.11.20
11# 열거형 카운트 알아오기  (0) 2017.09.22
10# 데이터 압축  (0) 2017.05.19
09# 중복 없는 랜덤키 값 추출  (0) 2017.04.18