【发布时间】:2016-04-20 20:24:16
【问题描述】:
我编写了一个 UWP 应用程序,一切正常(在调试和发布模式下)。我已经打包了我的应用程序并将其安装在安装了 windows 10 的平板电脑上(我在 windows 10 台式电脑上开发),仍然没有问题。
但是现在我想在这台平板电脑上以分配的访问模式(信息亭模式)运行我的应用程序,突然间我的消息框不再出现,并且出现错误。
因为我正在使用 mvvm 模式,所以我编写了一个帮助类来显示消息框,所以我不需要在我的 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.Normal, async () => {
await msgDialog.ShowAsync();
});
}
}
错误:
对 ASTA 的 COM 调用被阻止,因为调用链源自或通过另一个 ASTA。这种调用模式容易出现死锁,并且被公寓调用控制所禁止。
对 ASTA(线程 6992)的 COM 调用(IID:{638BB2DB-451D-4661-B099-414F34FFB9F1},方法索引:6)被阻止,因为调用链源自或通过另一个 ASTA(线程 7188) .这种呼叫模式容易发生死锁,并且被公寓呼叫控制所禁止。在:在 Windows.ApplicationModel.Core.CoreApplicationView.get_CoreWindow()
我不明白在 Windows 10 中使用分配的访问权限时有何不同。如上所述,此错误仅在应用程序在分配的访问权限中运行时出现。在任何其他情况下,一切正常(在台式电脑和平板电脑上)。
所以我的问题是:
有没有人在开发应用程序以在 Windows 10 中以分配的访问模式运行时遇到同样的问题?
或者有谁知道如何解决这个问题?
【问题讨论】:
-
您是否尝试过检查调度程序的 HasThreadAccess 属性,以便在 UI 线程中运行代码时不使用 RunAsync?
标签: c# windows-10 uwp kiosk-mode