Skip to content

System.InvalidOperationException when Cancel ThreadPool #16

@CyrilJ

Description

@CyrilJ

Hello,

I'm using this library for long-times but i recently had a problem :

Here the call stack (french sorry) :

System.InvalidOperationException: La collection a été modifiée; l'opération d'énumération peut ne pas s'exécuter.
à System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
à System.Collections.Generic.Dictionary`2.ValueCollection.Enumerator.MoveNext()
à Amib.Threading.SmartThreadPool.Cancel(Boolean abortExecution)

When watching the code of the method i think, it must create a copy of the values before looping on it. Replace :

foreach (ThreadEntry threadEntry in _workerThreads.Values)

by

var threadEntrys = _workerThreads.Values.ToList()
foreach (ThreadEntry threadEntry in threadEntrys )

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions