簡體   English   中英

如何等待異步函數c#winrt的完成

[英]How to wait for completion of asynchronous function c# winrt

我有代碼從網絡攝像頭獲取照片。 我需要編寫一個可以完成此過程的機制。 我該怎么做呢? 我有以下代碼:

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因為我等到所有異步函數都完成了。

而不是wb1.SetSource(memStream3); 你應該調用await wb1.SetSourceAsync(memStream3); 一切都應該是好的。 否則你可以設置var wb1 = new WriteableBitmap(1, 1); 等待,當SetSource完成時, wb1.PixelWidth大於1,但這個使用Task.Delay輪詢的方法不是最理想的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM