我们正在使用 JavaScript (WinJS) 构建一个 WinRT 应用程序,该应用程序通过 C# WinRT 组件库访问 REST/JSON Web 服务。在组件库中,我们有一个登录控件(很像 WebAuthenticationBroker),它允许我们将 ACS 登录与我们的 REST 服务一起使用。
应用层:
- 客户端(JS)
- WinRT 组件 dll (C#)
- C# 类库 dll (C#)
- UserControl(Xaml/C#,包含 WebView)
问题:当尝试创建登录控件时,WinRT 会抛出“HRESULT: 0x8001010E (RPC_E_WRONG_THREAD)”异常(进入 UserControl 的构造函数时),即使我通过 Windows.UI.Core.CoreWindow.GetForCurrentThread().Dispatcher 调用它(在我发现的有关 WinJS/C++ 组件的 MSDN 文章中推荐)。
如果我从 Xaml/C# 客户端调用它,无论是否使用 Windows.UI.Core.CoreWindow.GetForCurrentThread().Dispatcher.RunAsync(),代码都可以工作。
我试过用谷歌搜索这个并且还阅读了所有的 UserControl、Dispatcher 和 WinJS 文档,但我没有找到任何相关的东西。这是一个已知问题吗?有人可以提出解决方法吗?
由于我是第一次发帖,请保持温和 :-) 非常欢迎任何帮助!