안녕하세요.
뻑하면 기초적(?) 질문으로 질문을 드리게 됩니다.
제목이 이상할 수 있습니다만, 설명을 드리면 
스레드스타트에 지정되는 메소드의 위치에 대해 질문입니다.
가령 이런 클래스가 있다고 하겠습니다.
public delegate void TestDelegate(string msg);
public class TestClass
{
    public static TestDelegate tdMsg { get; set; }
    public int loopcount { get; set; }    
    private string msg { get; set; }
    ...
    public TestClass(string msg)
    {
        this.msg = msg;
    }
    ...
    public void Start()
    {
        // Execute
    }
    ...
    private void MethodA() { ... }
    private bool MethodB() { ... }
    private void MethodC() { ... }
}
이 경우 TestClass 전체를 스레드로 묶어서 동작하게 하고싶은데
어떤 방법이 있는가 합니다.
우선 제가 생각하는 방법은 아래의 2가지가 있습니다.
// 1번
private void ShowMsg(string msg) { ... }
void Main(string[] args)
{
    TestClass.tdMsg = new TestDelegate(ShowMsg);
    TestClass tc = new TestClass("Hello");
    tc.loopcount = 100;
    Thread t = new Thread(new ThreadStart(tc.Start));
    t.Start();
    t.Join();
}
// 2번
// *** TestClass에 TStart()라는 static 메소드를 선언합니다.
       public class TestClass
       {
           ... 위 코드와 동일 ...
       
           public static int Tloopcount { get; set; }
           public static void TStart(object msg)
           {
               TestClass tc = new TestClass(msg.ToString());
               tc.Start();
           }
       }
void Main(string[] args)
{
    TestClass.tdMsg = new TestDelegate(ShowMsg);
    TestClass.Tloopcount = 100;
    Thread t = new Thread(new ParameterizedThreadStart(TestClass.TStart));
    t.Start("Hello");
    t.Join();
}
이렇게 2가지 입니다.
현재 제가 사용하는 방법은 2번입니다만,
다른 방법이 있는지 혹은 1번과 2번중 어떤 방법이 효율적인지 궁금합니다.
        
        
                    
                    
                    
                    
                    
    
                    
                    
                    
                    
                    
                
                    [최초 등록일: ]
                    [최종 수정일: 6/16/2010]