2013-01-04 36 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; 
}