Windows RT - 是否在UI线程上执行按钮单击事件?

时间:2013-01-04 05:02:03

标签: c# xaml windows-8 windows-runtime winrt-xaml

我的xaml中有一个按钮点击事件,它会触发:

 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();
});

或者如果那只是多余的?

谢谢!

1 个答案:

答案 0 :(得分:4)

是。 UI引发的事件在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;
}