BackgroundTaskDeferral BackgroundTaskDeferral BackgroundTaskDeferral BackgroundTaskDeferral BackgroundTaskDeferral Class

Definition

Represents a background task deferral returned by the IBackgroundTaskInstance.GetDeferral method.

public : sealed class BackgroundTaskDeferral : IBackgroundTaskDeferral
struct winrt::Windows::ApplicationModel::Background::BackgroundTaskDeferral : IBackgroundTaskDeferral
public sealed class BackgroundTaskDeferral : IBackgroundTaskDeferral
Public NotInheritable Class BackgroundTaskDeferral Implements IBackgroundTaskDeferral
// This class does not provide a public constructor.
Attributes

Windows 10 requirements

Device family
Windows 10 (introduced v10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduced v1)

Examples

The following example shows how to use a background task deferral to delay a task from closing prematurely while asynchronous code is still running. Ensure that you complete all background task deferrals. Most background tasks have a timeout after which the app will be suspended or terminated regardless of whether there are any pending deferrals. However, leaving outstanding background task deferrals interferes with the system's ability to manage process lifetimes in a timely way.

//
// Declare that your background task's Run method makes asynchronous calls by
// using the async keyword.
//
public async void Run(IBackgroundTaskInstance taskInstance)
{
    //
    // Create the deferral by requesting it from the task instance.
    //
    BackgroundTaskDeferral deferral = taskInstance.GetDeferral();

    //
    // Call asynchronous method(s) using the await keyword.
    //
    var result = await ExampleMethodAsync();

    //
    // Once the asynchronous method(s) are done, close the deferral.
    //
    deferral.Complete();
}

Remarks

Note

This class is not agile, which means that you need to consider its threading model and marshaling behavior. For more info, see Threading and Marshaling (C++/CX) and Using Windows Runtime objects in a multithreaded environment (.NET).

Methods

Complete() Complete() Complete() Complete() Complete()

Informs the system that an asynchronous operation associated with a background task has finished.