1

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

或者如果那只是多余的?

谢谢!

4

1 回答 1

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;
}
于 2013-01-04T05:10:29.827 回答