Are calls to RhinoCommon threadsafe?

Are async methods that call RhinoCommon threadsafe?

For example, if I iterate through a list of BrepFace’s and evaluate their edges (e.g. obtain their Concavity) and store the curve geometry in a list, should I expect consistent results?

I have a very strange and intermittent bug in my application where I get random results. Code snippet below. Do I need to put a lock on the ResultContainer list?

    private protected override Task AnalyzeTask(Dispatcher dispatcher)
    {
        var task = Task.Run(() =>
        {
            foreach (var brep in _brepMerger.Breps)
            {
                var edges = brep.Edges;

                foreach (var edge in edges)
                {
                    if (_edgeAnalysisRule.IsUnsupported(edge, out var warningInfo) == false) continue;

                    var analysisResult = new AnalysisWarningResult(edge.EdgeCurve, warningInfo);

                    dispatcher.Invoke(() => this.ResultContainer.AddResult(analysisResult));
                }
            }
        });

        return task;
    }
    public async Task AnalyzeAsync(Dispatcher dispatcher)
    {
        this.IsRunning = true;

        await _brepMerger.Initialization;
        
        dispatcher.Invoke(this.ResultContainer.ClearResults);

        await AnalyzeTask(dispatcher);
    }

This issue was caused by multithreading; we were running multiple async processes simultaneously on the same Brep which returned unexpected and inconsistent results. Fixed by running each process one by one.