# TimerMsgHeartbeat

Sends a message periodically.

### Synopsis

`TimerHandle TimerMsgHeartbeat (Item msgport,uint32 seconds, uint32 microseconds, uint32 userdata1, uint32 userdata2)`

### Description

This function creates a timer that repeatedly notifies you by message at the specified interval. The timer continues sending notifications on a regular interval until you use `TimerSuspend()` to temporarily halt it or `TimerCancel()` to delete it.

The Heartbeat support in the TimerServices thread contains logic to prevent drift in the frequency of timer events. Messages are delivered at the specified frequency even if it takes you significant time to respond to each message event. If an entire frequency interval elapses and you still haven't replied to the prior message, you will miss one timer event but the frequency of subsequent events is not disturbed.

The TimerServices thread must be active before calling this function.

### Arguments

msgport
  Port to which the notification message is sent.

seconds
  Seconds portion of the frequency.

microseconds
  Microseconds portion of the frequency. This value can be larger than 1 million.

userdata1
  Value passed back to you in the msg_DataPtr field of the notification message.

userdata2
  Value passed back to you in the msg_DataSize field of the notification message.

### Return Value

A TimerHandle (a positive value) on success or a negative error code.

### Implementation

Library call implemented in lib3do.lib.

### Associated Files

lib3do.lib, timerutils.h

### See Also

`TimerMsgAtTime`, TimerMsgAfterDelay, HZ_TO_USEC