Я написал UWP-приложение, и все работает отлично (в режиме отладки и выпуска). Я упаковал свое приложение и установил его на планшет, на котором установлены окна 10 (я развиваюсь на настольном ПК Windows 10), по-прежнему нет проблем.
Но теперь я хочу запустить свое приложение в режиме назначенного доступа (режим киоска) на этом планшете, и вдруг из ниоткуда мои сообщения не появляются больше и появляется ошибка.
Потому что я работаю с шаблономMVVM я написал вспомогательный класс для показа MessageBoxes поэтому мне не нужно использовать Windows.UI
в моих ViewModels:Не удается показать MessageBox во время работы приложения в режиме назначенного доступа в Windows 10
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();
});
}
}
Ошибка:
A COM call to an ASTA was blocked because the call chain originated in or passed through another ASTA. This call pattern is deadlock-prone and disallowed by apartment call control.
A COM call (IID: {638BB2DB-451D-4661-B099-414F34FFB9F1}, method index: 6) to an ASTA (thread 6992) was blocked because the call chain originated in or passed through another ASTA (thread 7188). This call pattern is deadlock-prone and disallowed by apartment call control. at: at Windows.ApplicationModel.Core.CoreApplicationView.get_CoreWindow()
Я не понимаю, что происходит во время работы с назначенным доступом в Windows 10. Как упоминалось выше, эта ошибка появляется только при запуске приложения в назначенном доступе. В любом другом случае все работает нормально (на настольном ПК и на планшете).
Так что мой вопрос:
Кто-нибудь испытывал такую же проблему при разработке приложения для работы в режиме, назначенном доступа в Windows 10?
Или у кого-нибудь есть идея, как решить эту проблему?
Вы пытались сначала проверить свойство HasThreadAccess диспетчера, чтобы не использовать RunAsync, когда код работает в потоке пользовательского интерфейса? –