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

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

或者这是否只是多余的?

谢谢!

最佳答案

是的。 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;
}

关于c# - Windows RT - 按钮单击事件是否在 UI 线程上执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14151322/

相关文章:

c# - 备用网格行颜色?

c# - 如何在 Windows Phone 应用程序中从 StackPanel 制作位图图像

javascript - Windows 8 Metro 界面 - 是 IE10 吗?

c# - 如何从 "settings"弹出窗口更新页面控件

c# - 亚马逊产品广告 API C#

c# - 为什么我不应该实现 IObservable<T>?

c# - xaml ObjectDataProvider.MethodParameters 引用

c# - MSMQ 导致 Windows 8 崩溃并出现蓝屏死机

c# - 在两个已知字符之间查找未知字符串

c# - 无需在 ViewModel 上使用 Java.Lang.Object 即可自动完成 MVVM 和 Java 转换