2012. 5. 3. 00:28



 

using System;

using System.Collections.Generic;

using System.Windows.Forms;


namespace marlie.TumbnailDotnet

{

    static class Program

    {

        /// <summary>

        /// The main entry point for the application.

        /// </summary>

        [STAThread]

      

        static void Main()

        {

            Application.EnableVisualStyles();

            Application.SetCompatibleTextRenderingDefault(false);

            Application.Run(new MainForm());

        }

    }

}



헐.. 당황..    [STAThread] 이런 문법은 도데체 무엇이던가?! 


 C# 코드에서 [STAThread] 가 의미하는 바는 기본적으로, VS .NET에 의해 만들어진 응용 프로그램의 Main()메소드에는 [STAThread] 라는 속성으로 되어 있다. 


하지만 COM 형식을 이용하는 경우엔 [STAThread]  라는 것으로  해당 응용 프로그램이 COM형식을 이용하는 경우에 (단지 이 경우에만 해당하는 것인데) 해당 응용 프로그램이 단일 스레드 아파트(single threaded apartment, STA) 모델로 설정되어야 한다는 것을 런타임에게 알려주는 역할을 한다. 


즉 다중쓰레드로 동작하지 않는다는 것을 알려주는것이다. 


해당 응용 프로그램에서 COM 형식을 이용하지 않는다면, [STAThread] 어트리뷰트는 무시되기 때문에 삭제해도 무방하다.

Posted by k1rha