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(); 
} 
相關問題