# IDistributedApplicationLifecycleHook Methods

- Package: [Aspire.Hosting](/reference/api/csharp/aspire.hosting.md)
- Type: [IDistributedApplicationLifecycleHook](/reference/api/csharp/aspire.hosting/idistributedapplicationlifecyclehook.md)
- Kind: `Methods`
- Members: `3`

Defines an interface for hooks that are executed during the lifecycle of a distributed application.

## AfterEndpointsAllocatedAsync(DistributedApplicationModel, CancellationToken)

- Name: `AfterEndpointsAllocatedAsync(DistributedApplicationModel, CancellationToken)`
- Modifiers: `virtual`
- Returns: `Task`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/Lifecycle/IDistributedApplicationLifecycleHook.cs#L33)

Executes after the orchestrator allocates endpoints for resources in the application model.

```csharp
public interface IDistributedApplicationLifecycleHook
{
    public virtual Task AfterEndpointsAllocatedAsync(
        DistributedApplicationModel appModel,
        CancellationToken cancellationToken = default(CancellationToken))
    {
        // ...
    }
}
```

## Parameters

- `appModel` ([DistributedApplicationModel](/reference/api/csharp/aspire.hosting/distributedapplicationmodel.md))
  The distributed application model.
- `cancellationToken` (`CancellationToken`) `optional`
  A `Threading.CancellationToken`.

## Returns

`Task` -- A `Tasks.Task` representing the asynchronous operation.

## AfterResourcesCreatedAsync(DistributedApplicationModel, CancellationToken)

- Name: `AfterResourcesCreatedAsync(DistributedApplicationModel, CancellationToken)`
- Modifiers: `virtual`
- Returns: `Task`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/Lifecycle/IDistributedApplicationLifecycleHook.cs#L47)

Executes after the orchestrator has created the resources in the application model.

```csharp
public interface IDistributedApplicationLifecycleHook
{
    public virtual Task AfterResourcesCreatedAsync(
        DistributedApplicationModel appModel,
        CancellationToken cancellationToken = default(CancellationToken))
    {
        // ...
    }
}
```

## Parameters

- `appModel` ([DistributedApplicationModel](/reference/api/csharp/aspire.hosting/distributedapplicationmodel.md))
  The [DistributedApplicationModel](/reference/api/csharp/aspire.hosting/distributedapplicationmodel.md) for the distributed application.
- `cancellationToken` (`CancellationToken`) `optional`
  A `Threading.CancellationToken`.

## Returns

`Task` -- A `Tasks.Task` representing the asynchronous operation.

## Remarks

There is no guarantee that the resources have fully started or are in a working state when this method is called.

## BeforeStartAsync(DistributedApplicationModel, CancellationToken)

- Name: `BeforeStartAsync(DistributedApplicationModel, CancellationToken)`
- Modifiers: `virtual`
- Returns: `Task`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/Lifecycle/IDistributedApplicationLifecycleHook.cs#L22)

Executes before the distributed application starts.

```csharp
public interface IDistributedApplicationLifecycleHook
{
    public virtual Task BeforeStartAsync(
        DistributedApplicationModel appModel,
        CancellationToken cancellationToken = default(CancellationToken))
    {
        // ...
    }
}
```

## Parameters

- `appModel` ([DistributedApplicationModel](/reference/api/csharp/aspire.hosting/distributedapplicationmodel.md))
  The distributed application model.
- `cancellationToken` (`CancellationToken`) `optional`
  A `Threading.CancellationToken`.

## Returns

`Task` -- A `Tasks.Task` representing the asynchronous operation.
