ジェネリックな各種リストをスレッドセーフに扱う

その1

System.Collections.ICollectionインターフェイスにキャストすることで、SyncRootにアクセス可能。これでlockを行うことができる。

//こんな感じ
var list = new List<String>();
lock (((System.Collections.ICollection)list).SyncRoot)
{
    list.Add("アイテム1");
}