背景线程上的UWP bitmapimage

时间:2016-03-15 09:59:30

标签: multithreading win-universal-app bitmapimage background-thread

我有一个简单的问题。 在我的UWP应用程序中,我使用多个线程,而在后台线程上,当我尝试使用代码创建一个简单的BitmapImage时:template <typename U, typename T = U, T A1 = 0, T A2 = 0, T A3 = 0, T A4 = 0> struct Limit { static constexpr const U min = A1; static constexpr const U max = A2; }; template <intmax_t A1, intmax_t A2, intmax_t A3, intmax_t A4> struct Limit<float, intmax_t, A1, A2, A3, A4> { static constexpr const float min = A1 / (float) A2; static constexpr const float max = A3 / (float) A4; }; Limit<float, intmax_t, 40, 20, 30, 40> a; Limit<int, 10, 20> b; 。它会引发异常

  

该应用程序调用了一个为不同线程编组的接口。

此异常发生在我尝试创建图像的行上。我只是想创建这个图像,处理它的属性,然后将它存储在我的datalist中。

注意:datalist是一个简单的公共静态属性,可以在整个应用程序中访问。谢谢你

1 个答案:

答案 0 :(得分:2)

我无法从问题中看到完整的上下文,因此我不确定为什么会出现这种异常,但有一种可靠的解决方法是使用CoreDispatcher.RunAsync()。 文档说:

  

如果您在工作线程上并想要在UI线程上安排工作,请使用CoreDispatcher :: RunAsync。

如果您使用的是MVVMLight,您还可以使用它的DispatcherHelper类&#39; CheckBeginInvokeOnUI方法。它好一点,因为它首先检查它被调用的线程,如果它是UI线程,它会立即执行操作并仅在需要时将其传递给UI线程。