Well, I'll try to explain my situation as far as I could detail it. I'm trying to make compatible a third-party repository that can be used to download addons on the Steam workshop (it's called DepotDownloader managed by SteamRE).
The problem is that when I step-over the debugger gets lost and doesn't recover over the next line.
I already resolved one issue, as you can see here:
https://github.com/uta-org/DepotDownloader/commit/a935e90f4d7713700734fb9fc551cf50f51ca264
I'll try to comply with a Minimal, Complete, and Verifiable example. For it, you'll need to clone it with:
$ git clone -b uzsourcetoolkit https://github.com/uta-org/DepotDownloader.git
On a fresh Unity3D project (I'm currently using 2019.4.0.f1).
The following code is the one that I'm using to debug the code:
using System;
using System.ComponentModel;
using System.Threading;
using DepotDownloader;
using UnityEngine;
public class DepotTester : MonoBehaviour
{
    public object Target { get; }
    public event Action<ulong, ulong> DownloadProgressChanged = delegate { };
    public event Action<object, byte[]> DownloadCompleted = delegate { };
    public void UnloadEvents()
    {
    }
    public void DownloadDataAsync(ulong fromWhere)
    {
        // ReSharper disable once PossibleInvalidCastException
        //new Thread(ContentDownloader.DownloadPubfileAsync(fromWhere).GetAwaiter().GetResult).Start();
        ContentDownloader.DownloadPubfileAsync(fromWhere).GetAwaiter().GetResult();
    }
    private void OnDownloadProgressChanged(ulong bytesReceived, ulong totalBytesToReceive)
    {
        DownloadProgressChanged(bytesReceived, totalBytesToReceive);
    }
    private void OnDownloadDataCompleted(byte[] result)
    {
        DownloadCompleted(null, result);
    }
    private void Awake()
    {
        if (ContentDownloader.IsInitialized)
            return;
        string[] args = new string[0];
        ContentDownloader.Config.InstallDirectory = GetParameter<string>(args, "-dir");
        ContentDownloader.Config.VerifyAll = HasParameter(args, "-verify-all") ||
                                             HasParameter(args, "-verify_all") || HasParameter(args, "-validate");
        ContentDownloader.Config.MaxServers = GetParameter(args, "-max-servers", 20);
        ContentDownloader.Config.MaxDownloads = GetParameter(args, "-max-downloads", 4);
        ContentDownloader.Config.MaxServers = Math.Max(ContentDownloader.Config.MaxServers,
            ContentDownloader.Config.MaxDownloads);
        ContentDownloader.Config.LoginID =
            HasParameter(args, "-loginid") ? (uint?)GetParameter<uint>(args, "-loginid") : null;
        AccountSettingsStore.LoadFromFile("account.config");
        ContentDownloader.InitializeSteam3(null, null);
        ContentDownloader.DownloadProgressChanged = OnDownloadProgressChanged;
        ContentDownloader.DownloadCompleted = OnDownloadDataCompleted;
    }
    // Update is called once per frame
    private void Update()
    {
    }
    private void OnGUI()
    {
        if (GUI.Button(new Rect(5, 5, 100, 25), "Download addon"))
        {
            DownloadDataAsync(2129643967);
        }
    }
    private static int IndexOfParam(string[] args, string param)
    {
        for (var x = 0; x < args.Length; ++x)
            if (args[x].Equals(param, StringComparison.OrdinalIgnoreCase))
                return x;
        return -1;
    }
    private static bool HasParameter(string[] args, string param)
    {
        return IndexOfParam(args, param) > -1;
    }
    private static T GetParameter<T>(string[] args, string param, T defaultValue = default)
    {
        var index = IndexOfParam(args, param);
        if (index == -1 || index == args.Length - 1)
            return defaultValue;
        var strParam = args[index + 1];
        var converter = TypeDescriptor.GetConverter(typeof(T));
        if (converter != null)
            return (T)converter.ConvertFromString(strParam);
        return default;
    }
}
This is the current line that is giving me troubles: https://github.com/uta-org/DepotDownloader/blob/uzsourcetoolkit/ContentDownloader.cs#L836
This is what the ReadFully method contains:
private static byte[] ReadFully(this Stream input)
        {
            using (var ms = new MemoryStream())
            {
                input.CopyTo(ms);
                return ms.ToArray();
            }
        }
And this is what happens:
After pressing F10, this is what it looks like. the highlight disappeared:
Other times it gets stuck here:
I suppose that the problem is that maybe the Task.Run from here is getting into a deadlock. Maybe because the resource that is trying to be read is busy? I don't exactly what to do at this point.
Can anybody guide me in order to resolve this problem?



