 <p>While I have not managed to figure out why there were so many <code>ReaderWriterLock</code> instances in the finalizer queue, I did find a solution to my problem and got rid of them.</p> <p>Calling <code>DataSet.Dispose</code> did not help. Therefore I have started reusing existing <code>DataSet</code> instances instead of keep creating new ones because 'someone said that <code>DataSet.Clear</code> is slow' - it is not (if at all) in a long run. This approach completely removed the issue with the finalizer queue instances.</p>