我有一个简单的问题。
在我的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是一个简单的公共静态属性,可以在整个应用程序中访问。谢谢你
答案 0 :(得分:2)
我无法从问题中看到完整的上下文,因此我不确定为什么会出现这种异常,但有一种可靠的解决方法是使用CoreDispatcher.RunAsync()。 文档说:
如果您在工作线程上并想要在UI线程上安排工作,请使用CoreDispatcher :: RunAsync。
如果您使用的是MVVMLight,您还可以使用它的DispatcherHelper类&#39; CheckBeginInvokeOnUI方法。它好一点,因为它首先检查它被调用的线程,如果它是UI线程,它会立即执行操作并仅在需要时将其传递给UI线程。