【发布时间】:2015-03-09 21:43:32
【问题描述】:
如果我有一个 IRandomAccessStream 对象,如何创建一个 IBuffer 对象?
【问题讨论】:
标签: c# windows-8.1 win-universal-app
如果我有一个 IRandomAccessStream 对象,如何创建一个 IBuffer 对象?
【问题讨论】:
标签: c# windows-8.1 win-universal-app
我发现最简单的方法是通过 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),这是一个原生异步操作,所以尝试继续调用线程是没有意义的——这不会发生!