2013-01-04 39 views
1

我在我的XAML一個按鈕單擊事件時觸發:Windows RT - 在UI線程上執行按鈕點擊事件嗎?

private void Button_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e){ 
    StoryBoardName.begin() 
} 

我很好奇,如果我應該換這個「StoryBoardName.begin()像這樣:

var dispatcher = Windows.UI.Core.CoreWindow.GetForCurrentThread().Dispatcher; 
dispatcher.RunAsync(CoreDispatcherPriority.Normal,() =>{ 
    StoryBoardName.Begin(); 
}); 

或者,如果這樣做只是多餘的?

謝謝!

回答

4

是通過用戶界面引發的事件在UI線程處理。

事實上,由於線程設置的方式(SyncronizationContext),您甚至可以使用async/await在其他線程上執行異步工作,但仍然可以根據需要在UI線程上運行UI代碼,而不會更復雜。

private async void Button_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e) 
{ 
    StoryBoardName.Begin(); 
    IsEnabled = false; 
    await webClient.GoGetAWebpageAsync(); 
    IsEnabled = true; 
}