Por que meu manipulador de eventos é acionado duas vezes?

Ei eu estou tendo um momento difícil tentando resolver este problema ive sido por 3 horas e ainda não conseguia descobrir por que está fazendo isso ... aqui é o código

private void Catagory_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        int selectedCategoryId = categoryIdList[categoryListBox.SelectedIndex];

        client.GetItemsAsync(selectedCategoryId);
        client.GetItemsCompleted += 
            new EventHandler<GetItemsCompletedEventArgs>(client_GetItemsCompleted);
    }

void client_GetItemsCompleted(object sender, GetItemsCompletedEventArgs e)
{
        itemIdList.Clear();
        itemNameList.Clear();
        itemNumberList.Clear();
        itemDisplayList.Clear(); //Clears the Display List Items

        if (e.Error == null)
        {
            itemIdList = e.ItemIDList;
            itemNumberList = e.itemNumber;
            itemNameList = e.Result;

            for (int i = 0; i < itemIdList.Count; i++)
            {
                itemDisplayList.Add(new ItemDisplay { itemNumber = itemNumberList[i], itemName = itemNameList[i] });
            }

            //Populating the listbox controll with the itemDisplaylist...
            Items.ItemsSource = itemDisplayList;
        }
        else
        {
            MessageBox.Show("Problem in getting the items list.");
        }
    }

Quando eu mudar a categoria na primeira vez que funciona perfeitamente ... perfeitamente eu quero dizer que ele chama a funçãoGetItemsAsync(selectedCategoryId) e pega os resultados e chama o manipulador de eventosclient_GetItemsCompleted() e o funcionamento interno do manipulador de eventos funciona como deveria, ele define as listas com os dados apropriados e exibe o itemNumber e o itemName na caixa de listagem ... MAS quando eu altero a categoria novamente para obter itens diferentes, ela não funciona corretamente, o que ele faz é que limpa as listas e preenche as listas como deveria, executa o loop for e preenche o listBox chamadoItems mas por algum motivo ele vai para o topo da função novamente e esvazia todas as listas: / ... por favor, diga porque está executando a função novamente ... e quando escolho outra categoria novamente, ele executa o manipulador de eventos 3 vezes e depois 4 vezes e assim por diante .. alguém sabe por que está fazendo isso? Eu preciso disso fixo para o meu projeto :(

questionAnswers(1)

yourAnswerToTheQuestion