Microsoft MVP성태의 닷넷 이야기
글쓴 사람
김재영 (kjyoffice at empal.com)
홈페이지
첨부 파일
 

안녕하세요.
뻑하면 기초적(?) 질문으로 질문을 드리게 됩니다.

제목이 이상할 수 있습니다만, 설명을 드리면
스레드스타트에 지정되는 메소드의 위치에 대해 질문입니다.

가령 이런 클래스가 있다고 하겠습니다.

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]


비밀번호

댓글 작성자
 



2010-06-16 09시51분
예. 맞게 하신 것 같은데요. ^^
부가적으로 2번 코드로 가정한다면, TestClass의 생성자를 private으로 한다는 정도겠지요. ^^
kevin25
2010-06-16 10시00분
별도의 Thread.Start 메서드를 만들어 두고, TestClass 인스턴스를 함께 ParameterizedThreadStart에 전달하는 것도 좋지 않을까요?

public TestClass : IWorker
{
}

TestClass o = new TestClass();
Thread t = new Thread(ProcessTest, o);

void ProcessTest(object o)
{
  IWorker instance = o as IWorker;
  instance.Start();
}

방법이야 ^^ 생각나는 만큼 있을 것 같습니다.
kevin25
2010-06-17 09시18분
[김재영] 스레드 사용하면서 긴가민가 하는 부분이 있었는데
답글 감사합니다.
(아직 윈폼+스레드는 서툴지만, 사용할 수 있는 방법이 하나 더 생겼습니다. ^^)

방법의 다양성은 이방법 저방법 해볼 수 있으니 그것도 재미더라구요. :)

감사합니다~ :)
[guest]

... 76  [77]  78  79  80  81  82  83  84  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
5682/6/20079527이런 오류 화면을 어떻게 찾아봐야 - 알아봐야 - 하는지요?파일 다운로드1
569정성태2/6/200710830    답변글 [답변]: 이런 오류 화면을 어떻게 찾아봐야 - 알아봐야 - 하는지요? [1]
570정성태2/6/200710932        답변글 [답변]: [답변]: 이런 오류 화면을 어떻게 찾아봐야 - 알아봐야 - 하는지요?
5732/8/20079795            답변글 [답변]: [답변]: [답변]: 이런 오류 화면을 어떻게 찾아봐야 - 알아봐야 - 하는지요? [1]파일 다운로드1
565한귀순2/5/200710400typed dataset 의 유용성
566정성태2/6/200712147    답변글 [답변]: typed dataset의 유용성 [1]
564정민영2/5/200710534혹시 이런 경우 보신적 있으신가 궁금합니다..^^; [2]
563창민이2/2/200710710Visual C++ COM Objects Returning Recordsets 사용에 대해.. [3]
562현석1/29/200710604C# 스마트응용장치에서 아이콘 움직이게하는거 질문요 ^^ [1]파일 다운로드1
559초보1/27/200711968급 질문 입니다. visual studio 자동 종료에 대한 질문입니다. [2]
558즈믄1/26/200711909.Net Framework v2.0에서 Winform의 Panel에 Excel파일 보여주기 [2]
556정재우1/26/200711707vista에서 smartclient의 System.Security.PermissionsRegistryPermission 에러 [1]
555dev....1/25/2007135222005 WebBrowser내에서 팝업 처리 문제 관련 질문입니다.
561정성태1/29/200716211    답변글 [답변]: 2005 WebBrowser 내에서 팝업 처리 문제 관련 질문입니다.
554sky1/23/200711828<급질문> interop 를 사용함에 있어 [2]
557sky1/26/20079944    답변글 [답변]: <급질문> interop 를 사용함에 있어
553deve...1/15/200711869오류가 나는데 도저히 모르겠네여...좀 봐주세요... [3]파일 다운로드1
551sky1/23/200710904[급질문] vb6으로 만들어진 dll 를
552정성태1/10/200712624    답변글 [답변]: [급질문] vb6으로 만들어진 dll 를 [1]
546오택성1/2/200711307스마트클라이언트 DebugIEHost.log 좀 봐 주세요. [9]
545심현철12/28/200611325ClickOnce를 이용한 SmartClient의 설치 자동화 방법에 대해서 문의를 드립니다. [1]
53912/26/200610726COM+ 자동등록 하니 속도가 영...?
540정성태12/26/200612752    답변글 [답변]: COM+ 자동등록 하니 속도가 영...? [1]
538오택성12/26/200611897스마트클라이언트에서 그리드 컴포넌트 사용시 화면에 그리드가 올라오지 않네요~ [1]
537김현12/23/200612485스마트클라이언트 CAS배포문제와, ASP.NET에서 SmartClient로 DB인자 넘기는 문제 입니다. [3]
536오택성12/23/20069886스마트 클라이언트에서 A폼에서 B폼에 있는 그리드에 데이타를 담을려고 하는데요... [2]파일 다운로드1
... 76  [77]  78  79  80  81  82  83  84  85  86  87  88  89  90  ...