后台线程上的 UWP 位图图像
UWP bitmapimage on background thread
我有一个简单的问题。
在我的 UWP 应用程序中,当我尝试使用代码 var image=new BitmapImage();
创建一个简单的 BitmapImage 时,我正在使用多个线程并且在后台线程上。它抛出异常
The application called an interface that was marshalled for a different thread.
这个异常发生在我尝试创建图像的那一行。我只是想创建这个图像,处理它的属性,然后将它存储在我的数据列表中。
注意:datalist 是一个简单的public 静态属性,可在整个应用程序中访问。谢谢
我看不到问题的完整上下文,所以我不确定为什么会出现此异常,但解决它的一种可靠方法是使用 CoreDispatcher.RunAsync()。
文档说:
If you are on a worker thread and want to schedule work on the UI thread, use CoreDispatcher::RunAsync.
如果您使用的是MVVMLight, you can also make use of it's DispatcherHelper class' CheckBeginInvokeOnUI方法。它好一点,因为它首先检查调用它的线程,如果它是 UI 线程,它立即执行操作并仅在需要时将其传递给 UI 线程。
我有一个简单的问题。
在我的 UWP 应用程序中,当我尝试使用代码 var image=new BitmapImage();
创建一个简单的 BitmapImage 时,我正在使用多个线程并且在后台线程上。它抛出异常
The application called an interface that was marshalled for a different thread.
这个异常发生在我尝试创建图像的那一行。我只是想创建这个图像,处理它的属性,然后将它存储在我的数据列表中。
注意:datalist 是一个简单的public 静态属性,可在整个应用程序中访问。谢谢
我看不到问题的完整上下文,所以我不确定为什么会出现此异常,但解决它的一种可靠方法是使用 CoreDispatcher.RunAsync()。 文档说:
If you are on a worker thread and want to schedule work on the UI thread, use CoreDispatcher::RunAsync.
如果您使用的是MVVMLight, you can also make use of it's DispatcherHelper class' CheckBeginInvokeOnUI方法。它好一点,因为它首先检查调用它的线程,如果它是 UI 线程,它立即执行操作并仅在需要时将其传递给 UI 线程。