# IDataSource.RequestNotification()

Description:

The `RequestNotification` method notifies the client when entries are created, updated, or deleted in the specified calendar. If no calendar is specified, the default calendar is used.

This is an asynchronous method.

Syntax:

    result = so.IDataSource.RequestNotification(criteria, callback);

Arguments:

- `criteria`:

  This is an object that specifies which calendar and calendar entries to monitor for changes and when. For more information about the object properties and how to define them, see section Criteria for change notifications.

- `callback`:

  The `callback` argument is the name of the method that is executed when `RequestNotification` has results or status information to return. You must define this method separately. Follow the instructions in section Defining the callback handler for an asynchronous method to define the `callback` method.

Return value:

The `RequestNotification` method returns an object that contains the initial return value for the asynchronous call it started. The actual notification information is returned by the `callback` method in the `ReturnValue` property of its result object. The returned information is described in section Returned notification information.

Table: Return value properties for RequestNotification
Property | Description | Value
--- | --- | ---
`result.TransactionID` | This is a number used as an identification to match transactions started with a `RequestNotification` call to one or more calls it generates to `callback`. |
`result.ErrorCode` | This is a number that specifies a predefined error code. | See Service API error codes.
`result.ErrorMessage` | This is a text string that describes the error. | See Calendar Service API error messages.

Remarks:

- `RequestNotification` returns notifications until cancelled with `Cancel`. You can have multiple `RequestNotification` calls (instances) pending or in use at the same time.

- The calendar file to be monitored must exist on the device.

Example code:

For the complete source of a sample widget that demonstrates how to use this Service API, see the full example.