# DurableGrain Methods

[Type overview](/orleans/docs/api/csharp/microsoft.orleans.journaling/orleans.journaling.durablegrain/)

## GetOrCreateState(string, Func&lt;TArg, TState&gt;, TArg) {#getorcreatestate-2-string-system-func-targ-tstate-targ-62c4fd82}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.journaling/orleans.journaling.durablegrain/methods/getorcreatestate-2-string-system-func-targ-tstate-targ-62c4fd82/)

[Source](https://github.com/dotnet/orleans/blob/b7a9e3e1c9c54b3cec3a467c5734bf7744541bcf/src/Orleans.Journaling/DurableGrain.cs#L23-L31)

```csharp
protected TState GetOrCreateState<TArg, TState>(string name, Func<TArg, TState> createState, TArg arg)
```

### Parameters

- `name` (`string`)
- `createState` (`Func<TArg, TState>`)
- `arg` (`TArg`)

## GetOrCreateState(string) {#getorcreatestate-1-string-2cf0d3f4}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.journaling/orleans.journaling.durablegrain/methods/getorcreatestate-1-string-2cf0d3f4/)

[Source](https://github.com/dotnet/orleans/blob/b7a9e3e1c9c54b3cec3a467c5734bf7744541bcf/src/Orleans.Journaling/DurableGrain.cs#L19)

```csharp
protected TState GetOrCreateState<TState>(string name)
```

### Parameters

- `name` (`string`)

## WriteStateAsync(CancellationToken) {#writestateasync-system-threading-cancellationtoken-81134beb}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.journaling/orleans.journaling.durablegrain/methods/writestateasync-system-threading-cancellationtoken-81134beb/)

[Source](https://github.com/dotnet/orleans/blob/b7a9e3e1c9c54b3cec3a467c5734bf7744541bcf/src/Orleans.Journaling/DurableGrain.cs#L34)

```csharp
protected ValueTask WriteStateAsync(CancellationToken cancellationToken = default(CancellationToken))
```

### Parameters

- `cancellationToken` (`CancellationToken`)
