Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asynchronous WinRT异步处理程序中的错误线程异常_Asynchronous_Windows Runtime - Fatal编程技术网

Asynchronous WinRT异步处理程序中的错误线程异常

Asynchronous WinRT异步处理程序中的错误线程异常,asynchronous,windows-runtime,Asynchronous,Windows Runtime,WinRT项目,C++/CX。我正在尝试将PNG文件加载到可写的位图中。我正在将Source属性设置为irandomaccesstream。要从文件中获取流,必须使用异步操作-WinRT中没有打开的同步文件 我的异步完成处理程序似乎是在随机工作线程上执行的。在该处理程序中,最无辜的操作(如构建新的WriteableBitmap)会导致错误的ThreadException。这是不可复制的从运行到运行 发生什么事了?我应该把它记为发行前的趣事吗 Visual Studio 2012 RC,Windo

WinRT项目,C++/CX。我正在尝试将PNG文件加载到可写的位图中。我正在将
Source
属性设置为
irandomaccesstream
。要从文件中获取流,必须使用异步操作-WinRT中没有打开的同步文件

我的异步完成处理程序似乎是在随机工作线程上执行的。在该处理程序中,最无辜的操作(如构建新的WriteableBitmap)会导致错误的ThreadException。这是不可复制的从运行到运行

发生什么事了?我应该把它记为发行前的趣事吗


Visual Studio 2012 RC,Windows 8 build 8400。

当您与UI元素交互时,它们需要在UI线程上执行。确保您在UI线程上的最简单方法是使用PPL continuations—如果您使用CreateStream异步API,那么传递给“.then”方法的lambda应该在原始线程(通常是UI线程)的线程上下文中运行

如果无法通过PPL返回UI线程,则使用CoreDispatcher.RunAsync()并在传递给RunAsync的lambda中执行您的工作,该lambda将始终在UI线程上运行