0

백그라운드 전송을 사용하여 비디오를 다운로드하고 각 요청의 TransferStatusChanged 및 TransferProgressChanged 이벤트를 구독하여 상태 및 다운로드 진행률을 모니터링합니다. BackgroundTransferService.Remove() 메서드를 사용하여 백그라운드 전송 요청을 취소 한 경우 TransferStatusChanged 이벤트 as msdn mentioned이 발생했습니다. 나는 이벤트 핸들러를 실행하지 않으려는, 그래서 나는 다음과 같은 코드 요청을 제거하기 전에 이벤트를 취소하려고하면 여전히 해고BackgroundTransferRequest의 TransferStatusChanged 이벤트 처리기를 등록 취소 한 후 사용하지 않도록 설정하는 방법은 무엇입니까?

BackgroundTransferRequest transferToRemove = BackgroundTransferService.Find(requestId); 
if (transferToRemove != null) 
{ 
    transferToRemove.TransferStatusChanged -= transfer_TransferStatusChanged; 
    transferToRemove.TransferProgressChanged -= transfer_TransferProgressChanged; 
    BackgroundTransferService.Remove(transferToRemove); 
} 

하지만 TransferStatusChanged 이벤트 핸들러. 누구든지 나를 도울 수 있습니까?

답변

0

BackgroundTransferService.Remove (transferToRemove); 만 요청을 수락합니다. 언젠가 그것을 제거하는 데 시간이 걸릴 것입니다. 한편 Add() 함수를 다시 호출하면 transfer_TransferProgressChanged와 같은 이벤트가 하나 더 생깁니다.

transfer_TransferProgressChanged 이벤트에서 먼저 BackgroundTransferService가 요청을 포함하고 있는지 확인합니다.

if(BackgroundTransferService.Requests.Contains(m_currentRequest)) 
{ 
    BackgroundTransferService.Remove(m_currentRequest); 
    UnsubscribeYourEvents(); 
    DoOtherStuffRealtedToDownload(); 
}