次のどのコードが最適か疑問に思っています。
private static volatile OrderedDictionary _instance;
private static readonly Object SyncLock = new Object();
private static OrderedDictionary Instance
{
     get { return _instance ?? (_instance = new OrderedDictionary()); }
}
 public static Mea Add(Double pre, Double rec)
{
     lock (SyncLock)
     {
        ...
     }
}
それとも、IMOは次のものを使用するだけで問題ありませんか?
private static volatile OrderedDictionary _instance;
private static OrderedDictionary Instance
{
     get { return _instance ?? (_instance = new OrderedDictionary()); }
}
 public static Mea Add(Double pre, Double rec)
{
     lock (Instance)
     {
        ...
     }
}
Mike Strobel の回答に基づいて、次の変更を行いました。
public static class Meas
{
    private static readonly OrderedDictionary Instance = new OrderedDictionary();
    private static readonly Object SyncLock = new Object();
    public static Mea Add(Double pre, Double rec)
    {
        lock (SyncLock)
        {
            Instance.Add(pre, rec);
            ...
        }
    }
}