# IDistributedApplicationEventing Methods

- Package: [Aspire.Hosting](/reference/api/csharp/aspire.hosting.md)
- Type: [IDistributedApplicationEventing](/reference/api/csharp/aspire.hosting/idistributedapplicationeventing.md)
- Kind: `Methods`
- Members: `5`

Supports publishing and subscribing to events which are executed during the AppHost lifecycle.

## PublishAsync(T, CancellationToken)

- Name: `PublishAsync(T, CancellationToken)`
- Modifiers: `abstract`
- Returns: `Task`

Publishes an event to all subscribes of the specific event type.

```csharp
public interface IDistributedApplicationEventing
{
    public abstract Task PublishAsync<T>(
        T @event,
        CancellationToken cancellationToken = default(CancellationToken))
    {
        // ...
    }
}
```

## Parameters

- `event` (`T`)
  The event.
- `cancellationToken` (`CancellationToken`) `optional`
  A cancellation token.

## Returns

`Task` -- A task that can be awaited.

## PublishAsync(T, EventDispatchBehavior, CancellationToken)

- Name: `PublishAsync(T, EventDispatchBehavior, CancellationToken)`
- Modifiers: `abstract`
- Returns: `Task`

Publishes an event to all subscribes of the specific event type.

```csharp
public interface IDistributedApplicationEventing
{
    public abstract Task PublishAsync<T>(
        T @event,
        EventDispatchBehavior dispatchBehavior,
        CancellationToken cancellationToken = default(CancellationToken))
    {
        // ...
    }
}
```

## Parameters

- `event` (`T`)
  The event.
- `dispatchBehavior` ([EventDispatchBehavior](/reference/api/csharp/aspire.hosting/eventdispatchbehavior.md))
  The dispatch behavior for the event.
- `cancellationToken` (`CancellationToken`) `optional`
  A cancellation token.

## Returns

`Task` -- A task that can be awaited.

## Subscribe(Func<T, CancellationToken, Task>)

- Name: `Subscribe(Func<T, CancellationToken, Task>)`
- Modifiers: `abstract`
- Returns: [DistributedApplicationEventSubscription](/reference/api/csharp/aspire.hosting/distributedapplicationeventsubscription.md)

Subscribes a callback to a specific event type within the AppHost.

```csharp
public interface IDistributedApplicationEventing
{
    public abstract DistributedApplicationEventSubscription Subscribe<T>(
        Func<T, CancellationToken, Task> callback)
    {
        // ...
    }
}
```

## Parameters

- `callback` (`Func<T, CancellationToken, Task>`)
  A callback to handle the event.

## Returns

[DistributedApplicationEventSubscription](/reference/api/csharp/aspire.hosting/distributedapplicationeventsubscription.md) -- A subscription instance which can be used to unsubscribe

## Subscribe(IResource, Func<T, CancellationToken, Task>)

- Name: `Subscribe(IResource, Func<T, CancellationToken, Task>)`
- Modifiers: `abstract`
- Returns: [DistributedApplicationEventSubscription](/reference/api/csharp/aspire.hosting/distributedapplicationeventsubscription.md)

Subscribes a callback to a specific event type

```csharp
public interface IDistributedApplicationEventing
{
    public abstract DistributedApplicationEventSubscription Subscribe<T>(
        IResource resource,
        Func<T, CancellationToken, Task> callback)
    {
        // ...
    }
}
```

## Parameters

- `resource` ([IResource](/reference/api/csharp/aspire.hosting/iresource.md))
  The resource instance associated with the event.
- `callback` (`Func<T, CancellationToken, Task>`)
  A callback to handle the event.

## Returns

[DistributedApplicationEventSubscription](/reference/api/csharp/aspire.hosting/distributedapplicationeventsubscription.md) -- A subscription instance which can be used to unsubscribe.

## Unsubscribe(DistributedApplicationEventSubscription)

- Name: `Unsubscribe(DistributedApplicationEventSubscription)`
- Modifiers: `abstract`

Unsubscribe from an event.

```csharp
public interface IDistributedApplicationEventing
{
    public abstract void Unsubscribe(
        DistributedApplicationEventSubscription subscription)
    {
        // ...
    }
}
```

## Parameters

- `subscription` ([DistributedApplicationEventSubscription](/reference/api/csharp/aspire.hosting/distributedapplicationeventsubscription.md))
  The specific subscription to unsubscribe.
