空字节数组c#winrt

空字节数组c#winrt,c#,windows-runtime,C#,Windows Runtime,我有WriteableBitmap。我知道在变量wp1中存在图像,因为我保存了这张图片,一切正常。我需要将图像编码到字节[]数组中 WriteableBitmap wp1 = new WriteableBitmap(1, 1); ; wp1.SetSourceAsync(memStream); using (Stream stream = wp1.PixelBuffer.AsStream()) { if (stream.CanWrite) { byte[] pi

我有
WriteableBitmap
。我知道在变量
wp1
中存在图像,因为我保存了这张图片,一切正常。我需要将图像编码到
字节[]
数组中

WriteableBitmap wp1 = new WriteableBitmap(1, 1); ;
wp1.SetSourceAsync(memStream);

using (Stream stream = wp1.PixelBuffer.AsStream())
{
    if (stream.CanWrite)
    {
        byte[] pixelArray = new byte[stream.Length];
        await stream.ReadAsync(pixelArray, 0, pixelArray.Length);
    }
}

毕竟,
pixelArray
是空的。数组的长度
像素数组
等于流的长度,但所有字节均为零。我该怎么办?

我认为您的问题在于这行代码:

wp1.SetSourceAsync(memStream);
这是一个异步方法,所以您必须等到它完成后才能继续。尝试将其更改为:

await wp1.SetSourceAsync(memStream);

如果您使用的是WriteableBitmap扩展,那么有一种更简单的方法可以为您做到这一点,比如:
var pixelDataArray=wp1.ToByteArray()

为什么在读取流之前要检查是否能够写入流?现在还不清楚你想在这里做什么。我强烈怀疑
SetSourceAsync
不是您想要的-我注意到您也没有等待它。