BackgroundTaskDeferral BackgroundTaskDeferral BackgroundTaskDeferral BackgroundTaskDeferral BackgroundTaskDeferral Class


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

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

Windows 10 requirements

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


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.



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).


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

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