안녕하세요. 오늘 하루종일 싱글톤 패턴 알아보다 이렇게 포스팅 올리네요.


물론, 코드는 제가 한것도 있지만 외국 사이트에 있는 코드를 약간 응용해서 했고요.


싱글톤을 배울 때는 C++로만 사용하는 방법만 배웠고 Winform에서 할려니 좀 해맸어요..ㅎㅎ


머..배운지 벌써 2년이 넘어가서 그런것도 있지만..


우선은 Winform 2개를 한개의 프로젝트안에서 생성을 합니다.


그냥 생성만 하시면 됩니다. 


< 그림 1 >



    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }


        private void button1_Click(object sender, EventArgs e)

        {

            Form2.Instance.Show();

        }

    }



메인으로 쓰는 Winform에서는 버튼을 클릭 시 다른 Winform이 쓰게 이벤트만 생성하고


다른 폼의 Instance를 가지고 와서 Show()를 해 줍니다.


< 그림 2 >



namespace WindowsFormsApplication1

{

    public partial class Form2 : Form

    {

        private static Form2 inst;

        public static Form2 Instance

        {

            get

            {

                if (inst == null || inst.IsDisposed)

                {

                    inst = new Form2();

                }

                return inst;

            }

        }

        

        public Form2()

        {

            inst = this;

            InitializeComponent();

            

        }

    }

}


2번째 Winform에다가는 싱글톤을 바로 적용시키면 되고요.


저의 설명이 미흡하기 때문에 설명은 패스 하겠습니다.


단, 설명은 링크로 걸어 놓을게요^^


Singleton설명


< 그림 3 >



< 그림 4 >



위에 그림 3,4 처럼 버튼이 누르면 1개의 윈도우 창만 만들어지고 다른 창이 생성이 안됩니다.


아 물론 Singleton을 적용시키지 않으면 많은 창을 생성하겠죠?


감사합니다