我的应用程序源自 Windows Phone 8 Direct3D Xaml 示例,其中 C# 程序实例化包含 Direct3D 设备的 WinPRT 组件。C# 代码在 UI 线程上运行,组件代码在单独的应用程序线程上运行。WinPRT 组件与 C++ 预编译库一起使用,该库包含按线程声明的变量static __declspec(thread)。
变量在应用程序线程中需要时被初始化,但在 UI 线程上调用关闭(由生命周期 Closing 事件引起)。关闭进程使用了错误的每线程变量集,这些变量尚未初始化并导致崩溃。
我还没有找到在关闭期间在应用程序线程上调用的 WinPRT 组件上的任何方法。我希望能找到一个把我的东西挂起来的,但似乎没有。
那么,如何从 UI 线程调用关闭代码以在应用程序线程上运行呢?
WinPRT 严重限制了我可用的线程功能。我一直无法找到可行的解决方案。我查看了 Dispatcher 类,但在 WinPRT 上,它仅用于从工作线程在 UI 线程上运行代码,反之亦然。可能还有哪些其他选择?