Deadlock ==> public IEnumerable<T> GetDrawObjects<T>(bool log = true) where T : DrawingTool

This code works in 8.1.3.1
It Locks up in 8.1.4.1, 8.1.4.2, 8.1.50

    public void LogDrawObjects<T>() where T : DrawingTool
    {
        _ = GetDrawObjects<T>().ToArray();
    }

    public IEnumerable<T> GetDrawObjects<T>(bool log = true) where T : DrawingTool
    {
        foreach (var o in DrawObjects.ToList())
        {
            if (o is T dt)
            {
                var anchors = dt.SortAnchorPrices().Select(a => a.ToString("0.00")).JoinString("-");

                if (log)
                {
                    LogStateInfo("DrawObjects" + o.Tag, $"{o.GetType().Name} {o.Tag} {anchors} [{o.DrawingState}]");
                }

                yield return dt;
            }
        }
    }

[quote=“Bart_Wical, post:1, topic:2734”]

Have you tried using a copy of the list:

        List<DrawingTool> snapshot;
        snapshot = DrawObjects.ToList();
        foreach (var o in snapshot)
        {
            if (o is T dt)