Как удалить все обработчики событий в приложении Windows?
Вот ситуация:
public async void Test()
{
List<string> fileTypeFilter = new List<string>();
fileTypeFilter.Add(".jpg");
fileTypeFilter.Add(".png");
var folder = KnownFolders.PicturesLibrary;
var queryOptions = new QueryOptions(CommonFileQuery.OrderByName, fileTypeFilter);
var queryResults = folder.CreateFileQueryWithOptions(queryOptions);
//queryResults.ContentsChanged += null;
queryResults.ContentsChanged += QueryResults_ContentsChanged;
}
Я вызываю Test много раз, поэтому, когда в этой папке произошли некоторые изменения, QueryResults_ContentsChanged срабатывает много раз, но я просто хочу только один раз. Я пробовал "+= null", но он не работает, поэтому я понятия не имею, как удалить все обработчики событий из локальной переменной queryResults.
2 ответа
Я не вижу ни одного варианта использования, который требует вызова вашего Test
Метод много раз, я предлагаю проверить / проверить ваш дизайн.
Из вашего вопроса я понял, что вы хотите проверить, QueryResults_ContentsChanged
прикреплен к любому другому event
или нет, это невозможно (если у вас нет собственной логики).
В общем, событие может быть отписано, как показано ниже.
queryResults.ContentsChanged -= QueryResults_ContentsChanged;
Надеюсь это поможет.
Ты можешь использовать -=
Оператор отписаться от события.
queryResults.ContentsChanged -= QueryResults_ContentsChanged;
Смотрите MSDN для более подробной информации о том, как Subscribe
а также Unsubscribe
События