在 UWP 中从后台线程显示 ContentDialog

问题描述 投票:0回答:1

我有以下代码在我的 UWP 应用程序的后台线程中显示 ContentDialog:

await CoreWindow
    .GetForCurrentThread()
    .Dispatcher.RunAsync(
        CoreDispatcherPriority.Normal,
        async () =>
        {
            ContentDialog noWifiDialog = new ContentDialog
            {
                Title = "No wifi connection",
                Content = "Check your connection and try again.",
                CloseButtonText = "Ok"
            };

            ContentDialogResult result = await noWifiDialog.ShowAsync();
        }
    );

问题是当该代码运行时,我的应用程序的 UI 完全冻结并且没有任何反应。

我尝试使用

CoreDispatcher
扩展方法社区工具包的扩展方法 但这些都没有用。用户界面仍然保持冻结状态,并且不会显示对话框。

如何在 UWP 应用程序中显示来自后台线程的对话框?

c# uwp background dispatcher ui-thread
1个回答
0
投票

请改用 Window.Dispatcher 属性

就像这样:

  await Window.Current.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
        async () =>
        {
                ContentDialog noWifiDialog = new ContentDialog
                {
                    Title = "No wifi connection",
                    Content = "Check your connection and try again.",
                    CloseButtonText = "Ok"
                };

                ContentDialogResult result = await noWifiDialog.ShowAsync();
          
        });
© www.soinside.com 2019 - 2024. All rights reserved.