# GrainContextExtensions Methods

[Type overview](/orleans/docs/api/csharp/microsoft.orleans.core.abstractions/orleans.runtime.graincontextextensions/)

## DeactivateAsync(IGrainContext, DeactivationReason, CancellationToken) {#deactivateasync-this-orleans-runtime-igraincontext-orleans-deactivationreason-sy-1176612e}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.core.abstractions/orleans.runtime.graincontextextensions/methods/deactivateasync-this-orleans-runtime-igraincontext-orleans-deactivationreason-sy-1176612e/)

[Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Core.Abstractions/Core/IGrainContext.cs#L122-L123)

```csharp
[System.Obsolete(This method is error-prone: waiting deactivation to complete from within the grain being deactivated will usually result in a deadlock.)]
public static Task DeactivateAsync(this IGrainContext grainContext, DeactivationReason deactivationReason, CancellationToken cancellationToken = default(CancellationToken))
```

Deactivates the provided grain.

### Parameters

- `grainContext` (`IGrainContext`): The grain context.
- `deactivationReason` (`DeactivationReason`): The deactivation reason.
- `cancellationToken` (`CancellationToken`): A cancellation token which when canceled, indicates that the process should complete promptly.

### Returns

A `System.Threading.Tasks.Task` which will complete once the grain has deactivated.
