Как удалить все обработчики событий в приложении 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 События

Другие вопросы по тегам