【问题标题】:How to get an IBuffer from an IRandomAccessStream如何从 IRandomAccessStream 获取 IBuffer
【发布时间】:2015-03-09 21:43:32
【问题描述】:

如果我有一个 IRandomAccessStream 对象,如何创建一个 IBuffer 对象?

【问题讨论】:

    标签: c# windows-8.1 win-universal-app


    【解决方案1】:

    我发现最简单的方法是通过 MemoryStream.GetWindowsRuntimeBuffer :

    IRandomAccessStream stream = ...;
    
    using (var memoryStream = new MemoryStream())
    {
        memoryStream.Capacity = (int)stream.Size;
        var ibuffer = memoryStream.GetWindowsRuntimeBuffer();
        await stream.ReadAsync(ibuffer, (uint)stream.Size, InputStreamOptions.None).AsTask().ConfigureAwait(false);
    }
    

    【讨论】:

    • 这是您的解决方法还是您立即找到了解决方案并发布了它?
    • 这是我最终使用的,我想我会分享。
    • 你不应该做.AsTask().ConfigureAwait(false),这是一个原生异步操作,所以尝试继续调用线程是没有意义的——这不会发生!
    猜你喜欢
    • 2016-02-26
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多