Is there a way to multithread a unity application so my it does not freeze when loading lots of images

I am currently loading a bunch of UI elements, no problem so far but for each of these I am loading images aswell from the streamingdata folder.

Code for loading these images (potentially irrelevant):

[RequireComponent(typeof(SpriteRenderer))]
public class StoreImage : Image
{
    private readonly string storeImagePath = Application.streamingAssetsPath + "/Store/";

    public void LoadStoreImage(int id)
    {
        try
        {
            string url = Path.Combine(storeImagePath, $"{id}.png");

            byte[] imgData;
            Texture2D tex = new Texture2D(2, 2);

            imgData = File.ReadAllBytes(url);

            tex.LoadImage(imgData);

            Vector2 pivot = new Vector2(0.5f, 0.5f);
            Sprite sprite = Sprite.Create(tex, new Rect(0.0f, 0.0f, tex.width, tex.height), pivot, 100.0f);

            SpriteRenderer renderer = GetComponent<SpriteRenderer>();
            renderer.sprite = sprite;

            this.sprite = renderer.sprite;
        }
        catch { }
    }
}

However, when loading the images the entire application freezes and nothing is responsive until it is done, is there a workaround for this like loading the images on the background and serving them once done?

You could try this function

It works perfectly well with local files as long as you put the special file prefix on it (file:///)