UWP:从字节数组创建InMemoryRandomAccessStream的最快方法

时间:2019-07-10 17:28:33

标签: c# performance uwp stream

我需要以最快的方式从byte []创建一个InMemoryRandomAccessStream。

我想出了这种方法

private static async Task<InMemoryRandomAccessStream> GetStreamAsync(byte[] bytes)
{
    InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream();
    await stream.WriteAsync(bytes.AsBuffer());
    stream.Seek(0);
    return stream;
}

但不幸的是,它花费了大约8毫秒的时间,而就我们的目的而言,它实在太多了。

有没有更快的(也许是同步的)方法来达到相同的目的?

我正在寻找大约1毫秒或更短的时间。

谢谢!

1 个答案:

答案 0 :(得分:0)

  

我需要IRandomAccessStream传递给CanvasBitmap.LoadAsync()才能使用Win2D api将图像加载到SpriteVisual中。

对于您的评论,也许IRandomAccessStream确实是您所需要的,而不是InMemoryRandomAccessStream

这是从字节数组获取IAccessRandomStream的另一种方法:

private IRandomAccessStream GetStreamAsync(byte[] bytes)
{
    var ms = new MemoryStream(bytes);
    var stream = ms.AsRandomAccessStream();
    stream.Seek(0);
    return stream;
}

这种方法比原始方法要快。

但是,图像加载的速度有很多影响因素,我们只能尝试对其进行改进。

希望这对您有所帮助。