# GrainReminderExtensions.RegisterOrUpdateReminder(IGrainBase, string, TimeSpan, TimeSpan)

[Type overview](/orleans/docs/api/csharp/microsoft.orleans.reminders/orleans.grainreminderextensions/) | [Methods](/orleans/docs/api/csharp/microsoft.orleans.reminders/orleans.grainreminderextensions/methods/)

[Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Reminders/GrainReminderExtensions.cs)

```csharp
public static Task<IGrainReminder> RegisterOrUpdateReminder(this IGrainBase grain, string reminderName, TimeSpan dueTime, TimeSpan period)
```

Registers a persistent, reliable reminder to send regular notifications (reminders) to the grain. The grain must implement the `Orleans.IRemindable` interface, and reminders for this grain will be sent to the `ReceiveReminder` callback method. If the current grain is deactivated when the timer fires, a new activation of this grain will be created to receive this reminder. If an existing reminder with the same name already exists, that reminder will be overwritten with this new reminder. Reminders will always be received by one activation of this grain, even if multiple activations exist for this grain.

### Parameters

- `grain` (`IGrainBase`): The grain instance.
- `reminderName` (`string`): Name of this reminder
- `dueTime` (`TimeSpan`): Due time for this reminder
- `period` (`TimeSpan`): Frequency period for this reminder

### Returns

Promise for Reminder handle.
