Singleton的工作示例

时间:2013-11-27 20:35:52

标签: singleton

在C#中,我想实现Singletons在一个线程中向许多其他线程提供数据。

我决定使用Jon Skeet的懒惰形式的Singleton(谢谢,Jon!):

public sealed class Singleton
{
    Singleton()
    {
    }

    public static Singleton Instance
    {
        get
        {
            return Nested.instance;
        }
    }

    class Nested
    {
        // Explicit static constructor to tell C# compiler
        // not to mark type as beforefieldinit
        static Nested()
        {
        }

        internal static readonly Singleton instance = new Singleton();
    }
}

到目前为止,这么好。 ......但是如何使用它?

我想要做的是共享以下数据的单个实例:

public bool   myboolean   = false ;
public double mydoubles[] = new double[128,3] ;
public IntPtr myhandles[] = new IntPtr[128]   ;

如何将这些数据声明并引用为单身人士?

我还需要它们可以在不同的名称空间中引用。

非常感谢!

1 个答案:

答案 0 :(得分:0)

    // thread-safety
    public sealed class Singleton
    {
        private static Singleton instance = null;
        private static readonly object padlock = new object();

        private bool myboolean = false;
        private double[,] mydoubles = new double[128, 3];
        private IntPtr[] myhandles = new IntPtr[128];

        Singleton()
        {
        }

        public static Singleton Instance
        {
            get
            {
                lock (padlock)
                {
                    if (instance == null)
                    {
                        instance = new Singleton();
                    }
                    return instance;
                }
            }
        }
    }

并访问

        //Singleton.Instance.myboolean
        //Singleton.Instance.mydoubles
        //Singleton.Instance.myhandles