调用BitmapDecoder.CreateAsync(stream)时WinRT应用程序挂起

时间:2012-09-20 07:19:23

标签: c# windows-runtime winrt-async

我有以下方法,我传递一个加载了JPEG数据的InMemoryRandomAccessStream:

private async Task<byte[]> GetDataAsync(IRandomAccessStream stream)
{
    BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream);

    BitmapFrame frame = await decoder.GetFrameAsync(0);

    BitmapTransform transform = new BitmapTransform()
    {
        ScaledWidth = decoder.PixelWidth,
        ScaledHeight = decoder.PixelHeight
    };

    PixelDataProvider pixelData = await frame.GetPixelDataAsync(BitmapPixelFormat.Rgba8, BitmapAlphaMode.Straight, transform, ExifOrientationMode.IgnoreExifOrientation, ColorManagementMode.DoNotColorManage);

    return pixelData.DetachPixelData();
}

此方法一直挂起,除非我将断点放在第一行并跨越每一行。我尝试使用不同的JPEG图像,修改&#34; GetPixelDataAsync&#34;和临时插入&#34;等待Task.Delay(...)&#34;线之间,但没有任何帮助。该应用程序执行许多其他耗时的异步操作,除了这部分以外工作正常。目前还不清楚为什么设置一个断点(除了它有一些时间延迟)使它工作。

请帮助解决这个问题。

0 个答案:

没有答案