private void OnCancelButtonClick(object sender, EventArgs e) { while (TransfersList.SelectedItems.Count > 0) { TransferMonitor monitor = (TransferMonitor)TransfersList.SelectedItems[0]; if (monitor != null) { monitor.RequestCancel(); } _list.Remove(monitor); } }
/// <summary> /// This clears all completed transfers from the transfer queue /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ClearCompletedItems(object sender, EventArgs e) { var i = 0; // Perhaps a goofy looking iteration, but a foreach will not work because items are being removed from _list while (i < _list.Count) { if (_list.ElementAt(i).State == TransferRequestState.Complete) { TransferMonitor monitor = _list.ElementAt(i); monitor.RequestCancel(); //ensures that the request is removed from the queue, even if complete UnsubscribeMonitor(monitor); _list.RemoveAt(i); } else { i++; } } }