WinRT - загрузка данных с сохранением отзывчивости интерфейса

Я занимаюсь разработкой приложения для Windows Metro, и у меня возникает проблема с тем, что пользовательский интерфейс перестает отвечать на запросы. Насколько я могу судить, причина в следующем:

    <ListView
...
        SelectionChanged="ItemListView_SelectionChanged"            
...

Это событие обрабатывается здесь:

    async void ItemListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (this.UsingLogicalPageNavigation()) this.InvalidateVisualState();

        MyDataItem dataItem = e.AddedItems[0] as MyDataItem;
        await LoadMyPage(dataItem);
    }

    private async Task LoadMyPage(MyDataItem dataItem)
    {            
        SyndicationClient client = new SyndicationClient();
        SyndicationFeed feed = await client.RetrieveFeedAsync(new Uri(FEED_URI));                    

        string html = ConvertRSSToHtml(feed)
        myWebView.NavigateToString(html, true);            
    }

LoadMyPage требуется некоторое время, чтобы получить данные из веб-службы и загрузить их на экран. Тем не менее, похоже, что пользовательский интерфейс его ждет: я предполагаю, что пока указанное событие не завершится.

Итак, мой вопрос: что я могу с этим сделать? Есть ли лучшее событие, к которому я могу подключиться, или есть другой способ справиться с этим? Я думал о запуске фоновой задачи, но это кажется мне излишним.

РЕДАКТИРОВАТЬ:

Просто, чтобы уточнить масштабы этой проблемы, я говорю о том, что максимум 3-4 секунды не отвечает. Это ни в коем случае не длительная работа.

РЕДАКТИРОВАТЬ:

Я попробовал некоторые из предложенных ниже предложений, однако весь стек вызовов изSelectionChanged функция использует async / await. Я проследил это до следующего утверждения:

myFeed = await client.RetrieveFeedAsync(uri);

Который, кажется, не продолжает обработку, пока не завершится.

РЕДАКТИРОВАТЬ:

Я понимаю, что это превращается в войну Покойся, но ниже приведена копия проблемы с использованием пустого приложения в метро и кнопки:

XAML:

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <StackPanel>
        <Button Click="Button_Click_1" Width="200" Height="200">test</Button>
        <TextBlock x:Name="test"/>
    </StackPanel>
</Grid>

Код позади:

    private async void Button_Click_1(object sender, RoutedEventArgs e)
    {
        SyndicationFeed feed = null;

        SyndicationClient client = new SyndicationClient();
        Uri feedUri = new Uri(myUri);

        try
        {
            feed = await client.RetrieveFeedAsync(feedUri);

            foreach (var item in feed.Items)
            {       
                test.Text += item.Summary.Text + Environment.NewLine;                    
            }
        }
        catch
        {
            test.Text += "Connection failed\n";
        }
    }

Ответы на вопрос(5)

Ваш ответ на вопрос