2009-04-16 2 views
2

다음 single threaded appartment를 사용하고 있습니다. 스레드 개체에서 메모리/기타 리소스를 회수 할 수 없습니다. Actullay try catch와 fianlly 블록에서 스레드를 감싸고 싶습니다. 시도 및 포착이 완료되었습니다. 그러나 나는 마침내 블록에 대해 확신 할 수 없다. 어떤 코드, 속성 또는 함수가 finally 블록에서 호출해야합니까?스레드로부터의 청구 Resource/memory 단일 스레드 아파트실

System.Threading.Thread myThread = null; 
    try 
    { 
     myThread = new System.Threading.Thread(functionAddressETC) 
     myThread .SetApartmentState(System.Threading.ApartmentState.STA); 
     myThread .Start(); 
     myThread .Join(); 
    } 
catch(Exception ex) 
{} 
finally 
{ 
    // I need help in finally block. I need to reclaim all my resources 
    //what function do i need to call here?????? 
} 
+0

어떤 자료를 추천하고 있습니까? 스레드의 기본 핸들 및 스택 또는 스레드가 할당하는 리소스? – Michael

답변

1

GC가 메모리를 회수하여 파이널 라이저가 원시 리소스를 확보합니다. 이러한 프로세스가 수행되도록하는 유일한 방법은 더 이상 필요하지 않은 개체가 참조 해제되지 않도록하는 것입니다.

스레드는 스택과 별개로 자체 메모리/리소스를 가지고 있지 않습니다. 스레드가 스레드를 종료 할 때까지 정리됩니다 (네이티브 스레드 핸들을 복제하는 것이 싫은 경우 제외). 마지막 핸들이 닫힘).

+0

당신은 finally 블록에서 다음 코드를 확인해야한다는 뜻입니다. 마침내 { if (myThread! = null) // 릴리스 코드 //하지만 어떤 함수를 호출해야합니까? } –

+1

스레드 자체를 정리할 필요가 없습니다. 스레드 proc에 할당 된 관리되지 않는 리소스를 정리해야 할 수도 있습니다. –

+1

@Syed : 가입 만하면됩니다. – Richard

관련 문제