C# Can';在windows 10中,当应用程序以分配的访问模式运行时,不显示MessageBox

C# Can';在windows 10中,当应用程序以分配的访问模式运行时,不显示MessageBox,c#,windows-10,uwp,kiosk-mode,C#,Windows 10,Uwp,Kiosk Mode,我已经写了一个UWP应用程序,它运行良好(在调试和发布模式下)。我已经打包了我的应用程序,并将其安装在安装了windows 10的平板电脑上(我在windows 10台式pc上开发),但仍然没有问题。 但是现在我想在这个平板电脑上以指定的访问模式(kiosk模式)运行我的应用程序,突然我的消息框不见了,出现了一个错误。 因为我使用的是mvvm模式,所以我编写了一个用于显示MessageBox的帮助器类,因此我不需要在ViewModels中使用Windows.UI: public class Us

我已经写了一个UWP应用程序,它运行良好(在调试和发布模式下)。我已经打包了我的应用程序,并将其安装在安装了windows 10的平板电脑上(我在windows 10台式pc上开发),但仍然没有问题。
但是现在我想在这个平板电脑上以指定的访问模式(kiosk模式)运行我的应用程序,突然我的消息框不见了,出现了一个错误。
因为我使用的是mvvm模式,所以我编写了一个用于显示MessageBox的帮助器类,因此我不需要在ViewModels中使用
Windows.UI

public class UserNotificationService : IUserNotificationService
{
   public async Task ShowMessageDialogAsync(string message, string title = null)
   {
      MessageDialog messageDialog = title == null ? new MessageDialog(message) : new MessageDialog(message, title);
      await ShowAsync(messageDialog);
   }

   // This method throws an error
   private async Task ShowAsync(MessageDialog msgDialog)
   {
      // I've to do it like this because otherwise it won't work because I'm working on a different thread while calling this method
      await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.N‌​ormal, async () => {
         await msgDialog.ShowAsync();
      });
   }
}
错误:

对ASTA的COM调用被阻止,因为调用链源自或通过另一个ASTA。此调用模式容易死锁,单元调用控制不允许使用

对ASTA(线程6992)的COM调用(IID:{638BB2DB-451D-4661-B099-414F34FFB9F1},方法索引:6)被阻止,因为调用链源自或通过另一个ASTA(线程7188)。此调用模式容易死锁,单元调用控制不允许使用。at:at Windows.ApplicationModel.Core.CoreApplicationView.get\u CoreWindow()

我不明白在windows 10中使用分配的访问权限时有什么不同。如上所述,此错误仅在应用程序以指定的访问权限运行时出现。在任何其他情况下,都可以正常工作(在台式pc和平板电脑上)

所以我的问题是:
在windows 10中开发以指定访问模式运行的应用程序时,是否有人遇到过相同的问题?

或者有人知道如何解决此问题吗?

这可能会崩溃,因为您正在使用MainView dispatcher,它在Windows 10分配的访问模式应用程序中不起作用

建议使用

CoreApplication.GetCurrentView().Dispatcher
而不是

CoreApplication.MainView.CoreWindow.Dispatcher
从“”

每个视图或窗口都有自己的调度程序。在分配的访问模式下,不应使用MainView调度程序,而应使用CurrentView调度程序


您是否已尝试先检查dispatcher的HasThreadAccess属性,以便在UI线程中运行代码时不使用RunAsync?