【发布时间】:2013-01-01 00:28:28
【问题描述】:
我们正在使用 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(在 MSDN article I found about WinJS/C++ component 中推荐)。
如果我从 Xaml/C# 客户端调用它,代码可以在有或没有 Windows.UI.Core.CoreWindow.GetForCurrentThread().Dispatcher.RunAsync() 的情况下工作。
我尝试在 Google 上搜索并阅读了所有 UserControl、Dispatcher 和 WinJS 文档,但我没有找到任何相关内容。这是一个已知问题吗?有人可以提出解决方法吗?
由于我是第一次发帖,请保持温和 :-) 非常欢迎任何帮助!
【问题讨论】:
-
您能否发布一个简短的示例代码来说明问题? (C# 和 JS 端。)
-
我明天会尝试做点什么。当前代码不好演示。
标签: multithreading user-interface windows-runtime winrt-xaml winjs