Windows 8 在后台任务中实例化WriteableImage

Windows 8 在后台任务中实例化WriteableImage,windows-8,windows-runtime,Windows 8,Windows Runtime,我正在使用Live Tiles编写一个Windows 8应用商店应用程序。每个活动磁贴都是需要每x分钟刷新一次的图像。我正在使用带有时间触发器的后台任务来生成图像并刷新磁贴 生成我的图像意味着创建一个新图像并在其上绘制我的内容,但由于某些原因,我在尝试创建WriteableBitmap的新实例时遇到异常: var newImage = new Windows.UI.Xaml.Media.Imaging.WriteableBitmap(10, 10); 或 var newImage=Bitmap

我正在使用Live Tiles编写一个Windows 8应用商店应用程序。每个活动磁贴都是需要每x分钟刷新一次的图像。我正在使用带有时间触发器的后台任务来生成图像并刷新磁贴

生成我的图像意味着创建一个新图像并在其上绘制我的内容,但由于某些原因,我在尝试创建WriteableBitmap的新实例时遇到异常:

var newImage = new Windows.UI.Xaml.Media.Imaging.WriteableBitmap(10, 10);

var newImage=BitmapFactory.New(10,10)

引发此异常:

该应用程序调用了一个为 不同的线程。(HRESULT的异常:0x8001010E (RPC_E_错误_线程))

我觉得这是因为后台任务中没有UI线程,但话说回来,为什么WriteableBitmap需要UI线程


知道如何解决这个问题吗?如何在后台任务中实例化WriteableBitmap?

您可以使用
Dispatcher

Application.Current.Dispatcher.Invoke(
    DispatcherPriority.Normal,
    new Action(() => createBitmap)
);
更新

Dispatcher.RunAsync
    (CoreDispatcherPriority.Normal, 
    () => new WriteableBitmap(10, 10));

您仍然可以使用以下代码:

 CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, 
            () =>{
                // Your UI update code goes here!
                WriteableBitmap writeableBmp = BitmapFactory.New(imageWidth, imageHeight);
            });
但很可能会出现另一个异常(InvalidOperationException),即:
在意外时间调用了一个方法。WinRT信息:无法创建新视图,因为主窗口尚未创建。

结果表明,这在Windows 8中是不可能的


在后续版本Win 8.1和UWP中,通过

实现了这一点。这可能在常规应用程序中有效,但由于这是WinRT后台任务,因此没有可用的Application.Current.Dispacher。您是否有一个工作代码段要放在WinRT中后台任务的上下文中?@Mayank该代码也不工作。Dispatcher是指ServiceModel.Dispatcher(它没有RunAsync方法)或标准应用程序Dispatcher。我遇到了同样的问题。问得好。我希望看到一个真正有效的答案。