# LoadContentFileAsync(ContentNamespace, string, NativeArray<ContentFile>, JobHandle)

> Loads a serialized file asynchronously from disk.

## Definition

* **Type:** Method
* **Namespace:** [Unity.Loading](/engine/6000.5/script-reference/unity/loading.md)
* **Assembly:** UnityEngine.ContentLoadModule

```csharp
public static ContentFile LoadContentFileAsync(ContentNamespace nameSpace, string filename, NativeArray<ContentFile> dependencies, JobHandle dependentFence = default)
```

### Parameters

**** (\[ContentNamespace]\(/engine/6000.5/script-reference/unity/content/contentnamespace)): The [ContentNamespace](/engine/6000.5/script-reference/unity/content/contentnamespace.md) used to filter the results.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): Path of the file on disk.**** (\[NativeArray\<ContentFile>]\(/engine/6000.5/script-reference/unity/collections/nativearray1)): List of the [ContentFile](/engine/6000.5/script-reference/unity/loading/contentfile.md)s that will be referenced by the file being loaded. The ordering must match the ordering returned from the build process. [ContentFile.GlobalTableDependency](/engine/6000.5/script-reference/unity/loading/contentfile/globaltabledependency.md) can be used to indicate that the PersistentManager should be used to resolve references. This allows references to files such as "unity default resources".**** (\[JobHandle]\(/engine/6000.5/script-reference/unity/jobs/jobhandle)): The load will not begin until this [JobHandle](/engine/6000.5/script-reference/unity/jobs/jobhandle.md) completes. A default [JobHandle](/engine/6000.5/script-reference/unity/jobs/jobhandle.md) can be used if there is no dependency.

### Returns

| Type                                                                        | Description                                       |
| --------------------------------------------------------------------------- | ------------------------------------------------- |
| [ContentFile](/engine/6000.5/script-reference/unity/loading/contentfile.md) | Handle to access the results of the load process. |

### Remarks

The status of the load operation can be accessed using the returned [ContentFile](/engine/6000.5/script-reference/unity/loading/contentfile.md). Objects loaded with this function will not be garbage collected; the user is responsible for calling [ContentFile.UnloadAsync](/engine/6000.5/script-reference/unity/loading/contentfile/unloadasync.md) to free resources when they are no longer required. The user must call [ContentFile.UnloadAsync](/engine/6000.5/script-reference/unity/loading/contentfile/unloadasync.md) even if the load fails.

### Examples

```csharp
using System.Collections;
using Unity.Collections;
using Unity.Content;
using Unity.Loading;
using UnityEngine;

namespace BuildDocExamples
{
    public class ContentLoadInterface_LoadContentFileAsyncExample : MonoBehaviour
    {
        public IEnumerator Start()
        {
            NativeArray<ContentFile> empty = new NativeArray<ContentFile>();
            ContentFile depFileHandle = ContentLoadInterface.LoadContentFileAsync(ContentNamespace.Default, "path/to/depfile", empty);

            NativeArray<ContentFile> depFiles = new NativeArray<ContentFile>(1, Allocator.Temp);
            depFiles[0] = depFileHandle;
            ContentFile rootFileHandle = ContentLoadInterface.LoadContentFileAsync(ContentNamespace.Default, "path/to/rootfile", depFiles);
            depFiles.Dispose();

            // yield coroutine until loading is complete
            while (rootFileHandle.LoadingStatus == LoadingStatus.InProgress)
                yield return null;

            ulong localFileIdentifierOfObjectIWant = 25;
            GameObject obj = (GameObject)rootFileHandle.GetObject(localFileIdentifierOfObjectIWant);

            // When done using obj. unload both files.
            ContentFileUnloadHandle unloadHandleRoot = rootFileHandle.UnloadAsync();
            ContentFileUnloadHandle unloadHandleDep = depFileHandle.UnloadAsync();

            // yield coroutine until loading is complete
            while (!unloadHandleRoot.IsCompleted || !unloadHandleRoot.IsCompleted)
                yield return null;

            // file is now completly unloaded. obj has been deleted
        }
    }
}
```
