Cocos2d iphone 将图像从KnownFolders加载到BitmapImage

Cocos2d iphone 将图像从KnownFolders加载到BitmapImage,cocos2d-iphone,windows-8,c++-cli,Cocos2d Iphone,Windows 8,C++ Cli,我不确定我做错了什么,因为大多数教程都是基于Javascript或XAML的Win8应用程序开发。创建这样的任务会将代码移动到不同的线程上。当您从错误的线程访问对象时,将获得Platform::ErrorThreadException。每次都必须从同一线程访问GUI组件 我相信,如果您在上运行Async,将获得正确的线程。向RunAsync传递一个委托,并让该委托包括创建BitmapImage以及对BitmapImage执行的任何其他操作 根据要求,举一个例子 我不熟悉Win8开发,尽管我熟悉

我不确定我做错了什么,因为大多数教程都是基于Javascript或XAML的Win8应用程序开发。

创建这样的任务会将代码移动到不同的线程上。当您从错误的线程访问对象时,将获得Platform::ErrorThreadException。每次都必须从同一线程访问GUI组件

我相信,如果您在上运行Async,将获得正确的线程。向RunAsync传递一个委托,并让该委托包括创建BitmapImage以及对BitmapImage执行的任何其他操作


根据要求,举一个例子

我不熟悉Win8开发,尽管我熟悉它所基于的WPF。(如果C++/CLI现在支持lambdas,我将不得不返回并修改关于该主题的一些旧答案。)

我相信这就是你想要的。我可能对该委托有一些语法错误

First-chance exception at 0x75004B32 in myGame.exe: Microsoft C++ exception:        
Platform::WrongThreadException ^ at memory location 0x02D1D794. HRESULT:0x8001010E
First-chance exception at 0x75004B32 in myGame.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000.
First-chance exception at 0x75004B32 in myGame.exe: Microsoft C++ exception:   
Platform::WrongThreadException ^ at memory location 0x02D1E5F0. HRESULT:0x8001010E
Unhandled exception at 0x622C9AD1 (msvcr110d.dll) in PixBlitz.exe: An invalid parameter was passed to a function that considers invalid parameters fatal.

你的应用程序是否具有访问该文件位置和文件类型的权限?是的,如果没有权限,执行将无法通过第一个任务。谢谢David的回答,但你有点让我迷路了。我非常习惯于只使用cocos2d(-x),并且非常不熟悉Win8开发库。你能用一个例子来解释吗?我不熟悉Win8开发,但我熟悉它所基于的WPF。试试这段代码。
First-chance exception at 0x75004B32 in myGame.exe: Microsoft C++ exception:        
Platform::WrongThreadException ^ at memory location 0x02D1D794. HRESULT:0x8001010E
First-chance exception at 0x75004B32 in myGame.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000.
First-chance exception at 0x75004B32 in myGame.exe: Microsoft C++ exception:   
Platform::WrongThreadException ^ at memory location 0x02D1E5F0. HRESULT:0x8001010E
Unhandled exception at 0x622C9AD1 (msvcr110d.dll) in PixBlitz.exe: An invalid parameter was passed to a function that considers invalid parameters fatal.
Stream^ filesteam = files->GetAt(0)->Open(FileAccessMode::Read); // we're already on a background thread, no need for a Task if we're not going to call 'then'.

// I'm assuming 'this' is a subclass of Windows.UI.Xaml.Window, or something similar. 
this->Dispatcher->RunAsync(CoreDispatcherPriority::Low, []()
{
    BitmapImage^ bmp = ref new BitmapImage();
    bmp->SetSource(filestream);
}
);