티스토리 뷰

반응형

젠킨스 빌드를 실행시켰는데 프로젝트에서 빌드warning이 10개정도 나왔다ㅜㅜ

 

VS에서 빌드할때 에러만 신경썼던 탓에 warning이 뜬것을 인지하지 못하고 push 했다....ㅎㅎㅎ

 

얼른 수습해보자

 

CA1001 warning이 뜨면서 
IDisposable 형식 XXX의 멤버가 만들어지므로 XXX에 IDisposable을 구현하십시오. 어쩌고 뜨는 데 무슨 소리인지 1도 모르겠다. 우선 기본 배경을 살펴보자

 

warning 뜨는 기본배경:

webservice reference (.net 웹서비스참조) 프로젝트 1개씩만 객체가 생성되어야 한다.

만약 객체를 1개이상 생성했다면 객체의 life cycle 개발자가 관리해야 한다.(unmanaged resource).

 

API에서 svc 파일을 만들고 이를 webservice reference했으면 VS에서 자동으로 BaseClient 상속받은 cllient 만들어준다.(ex.  User.svc UserClient(BaseClient 자식) 자동생성)

 

BaseClient 자동으로 IDisposable 상속받아서 개발자가 직접 resource 해제하도록 유도한다.

 

warning 뜨는 이유:

WEB 프로젝트에서 webservice reference 객체를 다중사용하고 있는데, client 생성할때마다 dispose 호출하고있지않다. , 자원이 해제되고 있지않고 있는 것이다. 그에 대한 warning이 뜨는 것이다.

 

해결방법:
    • 싱글톤 패턴으로 변경하여 webservice reference 객체 한번만 생성하도록 수정 클라이언트 세션 제대로 매핑될 위험성이 있음
    • 객체가 필요할때마다 생성하지 않고 using구문을 사용하여 그때그때만 사용함 코드가 길어짐. (이 방법이 그나마 나은 듯하다.)
수정한 코드:

using 구문을 사용해서 using내에 객체 생성. using 구문이 끝나면 자원 자동 해제 되도록 구현했다.

1
2
3
4
using (ProcessClient _clientProcess = new ProcessClient()) {
    //_clientProcess 초기설정
    //_clientProcess 사용
}
cs

 

  • 참고사이트

https://riptutorial.com/csharp/example/299/multiple-using-statements-with-one-block

https://storycompiler.tistory.com/223

https://stackoverflow.com/questions/429478/do-i-need-to-dispose-a-web-service-reference-in-asp-net/653170#653170

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함