# IsHandleValid(in AtomicSafetyHandle)

> Checks if an AtomicSafetyHandle is valid.

## Definition

* **Type:** Method
* **Namespace:** [Unity.Collections.LowLevel.Unsafe](/engine/6000.0/script-reference/unity/collections/lowlevel/unsafe.md)
* **Assembly:** UnityEngine.CoreModule

## IsHandleValid(AtomicSafetyHandle)

```csharp
public static bool IsHandleValid(in AtomicSafetyHandle handle)
```

### Parameters

**** (\[AtomicSafetyHandle]\(/engine/6000.0/script-reference/unity/collections/lowlevel/unsafe/atomicsafetyhandle)): The AtomicSafetyHandle to check.

### Returns

| Type                                                          | Description                                                   |
| ------------------------------------------------------------- | ------------------------------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | `true` if the AtomicSafetyHandle is valid, `false` otherwise. |

### Remarks

An `AtomicSafetyHandle` is invalid under the following conditions:

* The version number it stores no longer matches the version number of the associated entry in the safety system.
* [AtomicSafetyHandle.Release](/engine/6000.0/script-reference/unity/collections/lowlevel/unsafe/atomicsafetyhandle/release.md) is called on the `AtomicSafetyHandle`, or on another `AtomicSafetyHandle` that references the same memory region.
* The secondary version number it stores no longer matches the secondary version number of the associated entry in the safety system. This situation happens when [AtomicSafetyHandle.CheckWriteAndBumpSecondaryVersion](/engine/6000.0/script-reference/unity/collections/lowlevel/unsafe/atomicsafetyhandle/checkwriteandbumpsecondaryversion.md) or SetBumpSecondaryVersionOnSchedule are called on the `AtomicSafetyHandle`.

For more information about container version numbers, refer to [Copying NativeContainer structures](/engine/6000.0/manual/scripting/optimization/job-system/thread-safe-types/copy-nativecontainer.md).
