Gio.Cancellable.connect

### Method

# Gio Cancellableconnect

since: 2.22

#### Declaration [src]

    gulong
    g_cancellable_connect (
      GCancellable* cancellable,
      GCallback callback,
      gpointer data,
      GDestroyNotify data_destroy_func
    )

#### Description [src]

Convenience function to connect to the `GCancellable::cancelled` signal. Also handles the race condition that may happen if the cancellable is cancelled right before connecting.

`callback` is called exactly once each time `cancellable` is cancelled, either directly at the time of the connect if `cancellable` is already cancelled, or when `cancellable` is cancelled in some thread. In case the cancellable is reset via `g_cancellable_reset()` then the callback can be called again if the `cancellable` is cancelled.

`data_destroy_func` will be called when the handler is disconnected, or immediately if the cancellable is already cancelled.

See `GCancellable::cancelled` for details on how to use this.

Since GLib 2.40, the lock protecting `cancellable` is not held when `callback` is invoked. This lifts a restriction in place for earlier GLib versions which now makes it easier to write cleanup code that unconditionally invokes e.g. g_cancellable_cancel().

Available since: 2.22

#### Parameters

`cancellable`

  Type: `GCancellable`

  A `GCancellable`.

  The argument can be `NULL`.

`callback`

  Type: `GCallback`

  The `GCallback` to connect.

`data`

  Type: `gpointer`

  Data to pass to `callback`.

  The argument can be `NULL`.
  The data is owned by the caller of the method.

`data_destroy_func`

  Type: `GDestroyNotify`

  Free function for `data` or `NULL`.

  The argument can be `NULL`.

#### Return value

Type: `gulong`

The id of the signal handler or 0 if `cancellable` has already been cancelled.