问题描述
我正在开发 UWP 应用。我正在为 MVVM 使用 caliburn.micro 框架。
我重写了 Shellviewmodel 的 OnViewLoaded(object view)
方法,以对异步登录方法进行等待调用,如下所示:
protected async override void OnViewLoaded(object view)
{
base.OnViewLoaded(view);
if (GetView() is UIElement page)
{
page.KeyboardAccelerators.Add(_altLeftKeyboardAccelerator);
page.KeyboardAccelerators.Add(_backKeyboardAccelerator);
}
await StartLoginProcess();
}
private async Task StartLoginProcess()
{
/// validations go here
await _eventAggregator.PublishOnUIThreadAsync(new AuthenticationFailedMessage()).ConfigureAwait(false);
}
当我尝试运行应用程序时,它抛出以下异常: exception at login
最初我认为 ConfigureAwait(false)
中 StartLoginProcess()
的用法是错误的,但删除它没有任何区别。
有人遇到过这种问题吗? 任何帮助将不胜感激。
解决方法
_eventAggregator.PublishOnCurrentThread(message);
解决了这个问题。我想我是从错误的上下文中调用 _eventAggregator.PublishOnUIThread(message)
。它本质上需要从 UI 线程本身内部调用,而我的情况并非如此。