LowLagPhotoCapture.FinishAsync LowLagPhotoCapture.FinishAsync LowLagPhotoCapture.FinishAsync LowLagPhotoCapture.FinishAsync LowLagPhotoCapture.FinishAsync Method


Asynchronously releases the LowLagPhotoCapture object and resources used by the capture photo operation.

public : IAsyncAction FinishAsync()
IAsyncAction FinishAsync() const;
public IAsyncAction FinishAsync()
Public Function FinishAsync() As IAsyncAction
Windows.Media.Capture.LowLagPhotoCapture.finishAsync().done( /* Your success and error handlers */ );


Object that is used to control the asynchronous operation.


Here is an example that shows how to setup and take low lag photos. It displays the captured photo and thumbnail in Image objects. The XAML creates a simple UI with a two Image objects and some Button objects to interact with the MediaCapture element. In code, there is a method to initialize the MediaCapture object, a method to initialize the LowLagPhotoCapture object, a method to take the photo and display it, and a method to shutdown the LowLagPhotoCapture.

<StackPanel Orientation="Horizontal">
    <Image x:Name="imageLowLagPhoto" Stretch="None" 
           Width="320" Height="240" />
    <Image x:Name="imageLowLagThumbnail" Stretch="None" 
           Width="320" Height="240" />

<StackPanel Orientation="Horizontal">
    <Button Click="InitMediaCapture_Click" Content="Initialize Camera" />
    <Button Click="InitLowLagPhotoCapture_Click" Content="Initialize Low Lag Photo Capture"/>
    <Button Click="CaptureLagPhotoCapture_Click" Content="Capture Low Lag Photo"/>
    <Button Click="CloseLagPhotoCapture_Click" Content="Finish low Lag Capture"/>
LowLagPhotoCapture lowLagCaptureMgr = null;
MediaCapture mediaCaptureManager;

async private void InitMediaCapture_Click(object sender, RoutedEventArgs e)
    mediaCaptureManager = new MediaCapture();
    await mediaCaptureManager.InitializeAsync();

async private void InitLowLagPhotoCapture_Click(object sender, RoutedEventArgs e)
    // Enable thumbnail images
    mediaCaptureManager.VideoDeviceController.LowLagPhoto.ThumbnailEnabled = true;
    mediaCaptureManager.VideoDeviceController.LowLagPhoto.ThumbnailFormat = MediaThumbnailFormat.Bmp;
    mediaCaptureManager.VideoDeviceController.LowLagPhoto.DesiredThumbnailSize = 25;

    // Image properties
    ImageEncodingProperties imgFormat = ImageEncodingProperties.CreateJpeg();

    // Create LowLagPhotoCapture object
    lowLagCaptureMgr = await mediaCaptureManager.PrepareLowLagPhotoCaptureAsync(imgFormat);

async private void CaptureLagPhotoCapture_Click(object sender, RoutedEventArgs e)
    // Take photo
    CapturedPhoto photo = await lowLagCaptureMgr.CaptureAsync();

    // Get photo as a BitmapImage
    BitmapImage bitmap = new BitmapImage();
    await bitmap.SetSourceAsync(photo.Frame);

    // Get thumbnail as a BitmapImage
    BitmapImage bitmapThumbnail = new BitmapImage();    
    await bitmapThumbnail.SetSourceAsync(photo.Thumbnail);

    // imageLowLagPhoto is a <Image> object defined in XAML
    imageLowLagPhoto.Source = bitmap;

    // imageLowLagThumbnail is a <Image> object defined in XAML
    imageLowLagThumbnail.Source = bitmapThumbnail;

async private void CloseLagPhotoCapture_Click(object sender, RoutedEventArgs e)
    // Release the LowLagPhotoCapture object and resources
    await lowLagCaptureMgr.FinishAsync();