.NET의 다른 프로세스에 의해 잠긴 파일 삭제
현재 다른 프로세스에서 사용 중인 파일을 제거하는 것은 .NET 개발에서 일반적인 문제입니다. 일반적인 예로는 디스크에서 메모리로 이미지를 로드하는 애플리케이션이 있습니다. 이후에 이러한 파일을 삭제하는 것은 어려울 수 있습니다.
이 문제는 최근 개발자 문의에서 강조되었습니다. 개발자가 UI 요소를 제거하고 null
에 대한 이미지 참조를 설정한 후에도 애플리케이션에서 사용되는 파일을 삭제하려고 했습니다. 이러한 단계에도 불구하고 IOException
오류가 지속되어 파일이 잠겨 있음을 나타냅니다.
파일 잠금 해제
근본 원인은 가비지 수집에 있는 경우가 많습니다. .NET에서는 참조되지 않은 개체가 가비지 수집기에 의해 삭제되도록 예정되어 있지만 이는 즉시 삭제되지는 않습니다. 이러한 지연으로 인해 해당 이미지 개체가 메모리에서 제거된 후에도 파일 핸들이 열려 있을 수 있습니다.
해결책에는 가비지 수집을 수동으로 시작하고 보류 중인 종료자가 완료되기를 기다리는 것이 포함됩니다. 다음 코드 조각은 이를 보여줍니다.
<code class="language-csharp">System.GC.Collect(); System.GC.WaitForPendingFinalizers(); File.Delete(picturePath);</code>
GC.Collect()
및 GC.WaitForPendingFinalizers()
을 호출하면 즉시 가비지 수집이 강제 실행되고 이미지 객체에 대한 모든 느린 참조가 해제되며 파일이 성공적으로 삭제됩니다.
위 내용은 .NET의 다른 프로세스에 의해 잠긴 파일을 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!