2015-01-19 3 views
7

예를 들어,Process.GetCurrentProcess()에 대해 Dispose를 호출해야합니까?

How to get the current ProcessID?

System.Diagnostics.Process.GetCurrentProcess()에 의해 반환 된 개체에 대해 Dispose를 호출해야 귀찮게 아무도 볼 수 없습니다. 실제로 호출해야합니까? 이유를 설명하십시오.

+4

단순 : 'IDisposable'을 구현하는 경우'Dispose '를 호출하십시오. 관리되지 않는 메모리 나 다른 리소스에 대한 핸들을 유지할 수도 있고 그렇지 않을 수도 있습니다. 현재 구현을 모를뿐입니다. – Samuel

+2

전화하지 않아도됩니다. 그래서 당신은 예 (Yes)와 무응답 (No answer)을 얻었고, 당신은 여전히 ​​아무것도 모릅니다. 이 질문을하지 마십시오. 당신은 항상 처분 할 수도 있고, 틀림없이 결코 잘못하지 않을 수도 있습니다. 또는 1 억 시간 동안 테스트 앱을 작성하는 데 몇 분을 소비합니다. 이제 진정한 답을 알게되었습니다. –

답변

3

예, 실제로 중요합니다. 실제 source이 표시되면 DisposeComponent에서 상속받은 것이 아니라는 것을 알 수 있습니다.

나는 그 코드를보고, EnableRaisingEventstrue으로 설정되면 대기 핸들을 생성하는 것이 가장 중요하다고 생각합니다. 메모리를 막고 누출을 처리하기 위해 핸들을 해제해야합니다.

+0

누수가 없습니다. 대기 핸들의 지연 릴리스는 무죄입니다. 할당 할 수있는 가장 저렴한 OS 오브젝트입니다. 또한 그가 자신의 프로세스에 대해 Exited 이벤트를 구독했을 가능성은 희박합니다.) –

+0

@HansPassant : 링크가 그저 샘플이었을 것 같습니다. 핸들을 사용하여 무거운 프로세싱을 수행하는 경우 핸들이 부족할 수 있습니다. 그리고 그것도 중요하지 않습니다. 객체가 IDisposable을 구현하면 Dispose를 호출해야합니다. –

+1

그것은화물 숭배 접근법입니다. 그것은 SO와 같은 사이트에 실제로 속하지 않습니다. 그러나 제거하기가 어렵다. –