>>194
スレッドセーフかどうかが問題になるようなコレクションを
ASP.NETのスレッド間で共有する必要があるのか考えたほうがよさげ

1) スレッドセーフではない。
lockが必要かどうかは使い方次第
https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1.getenumerator?view=netframework-4.7.1

2) IEnumerable<T>を自前で実装する話ならyield returnをlockで囲んだところで意味ない
必要なら呼び出し側で対処する

3) 知らん