我有从网络摄像头获取照片的代码。我需要编写一个可以完成此过程的机制。我该怎么做呢?我有以下代码:
ImageEncodingProperties imageProperties = ImageEncodingProperties.CreateJpeg();
var memStream3 = new Windows.Storage.Streams.InMemoryRandomAccessStream();
var mediaCaptureMgr1 = new MediaCapture();
await mediaCaptureMgr1.InitializeAsync();
mediaCaptureMgr1.SetPreviewMirroring(true);
await mediaCaptureMgr1.CapturePhotoToStreamAsync(imageProperties, memStream3);
await memStream3.FlushAsync();
memStream3.Seek(0);
WriteableBitmap wb1 = new WriteableBitmap(320, 240);
wb1.SetSource(memStream3);
//1
while (true)
{
await Task.Delay(TimeSpan.FromSeconds(0.1));
//if CapturePhotoToStreamAsync finished? OR memStream3 not null?
//break;
}
//2
如果我在// 1开始对wb1做任何事情,我将无法工作,因为wb1 = null。如果我在// 2 wb1开始这样做! = null因为我等到所有异步函数都完成了。
答案 0 :(得分:2)
而不是wb1.SetSource(memStream3);
你应该致电await wb1.SetSourceAsync(memStream3);
,而且一切都应该是好的。否则,您可以设置var wb1 = new WriteableBitmap(1, 1);
并等待wb1.PixelWidth
在SetSource
完成时大于1,但这种带Task.Delay
轮询的方法不是最理想的。