2
그래서 WebClient를 using 문으로 묶었습니다. 하지만 갑자기 내 개체 IDisposable 구현하고 사용하여 문장에 싸여 경우 이벤트에서 구독을 취소해야합니까 궁금해?웹 클라이언트를 처분하는 경우 WebClient의 이벤트 구독을 취소해야합니까
다음은 현재 내 WebClient
을 사용하는 방법에 대한 예제 코드입니다. 이 코드는 이벤트로부터의 가입을 취소하지 않았기 때문에 메모리 누수가 발생합니까? 아니면 dispose 메소드가이를 처리합니까?
using (WebClient wc = new WebClient())
{
wc.DownloadProgressChanged += ((sender, args) =>
{
//monitor something
});
wc.DownloadFileCompleted += ((sender, args) =>
{
//do something
});
wc.DownloadFileAsync(new Uri(string.Format("{0}/{1}", Settings1.Default.WebPhotosLocation, Path.GetFileName(f.FullName))), filePath);
}
수동으로 처리해야합니다. –
@SriramSakthivel 댓글을 확대 해주세요. '그것'은 무엇과 관련이 있습니까? 내 'WebClient'는 using 문을 통해 처리됩니다. 이벤트 처리기에 대해서는 해당 객체를 처리 할 수 없습니다. – user1
비동기 작업이 완료되기 전에 WebClient를 삭제하고 있습니다 (DownloadFileAsync). 합법적인지 확신 할 수 없습니다. 또한 이벤트 핸들러가 인스턴스 메소드를 가리키면 이벤트 핸들러가'Dispose'에서 제거되지 않습니다. 그런 다음 인스턴스는 웹 클라이언트가 GC 될 때까지 GC되지 않습니다. –