이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 19083|회답: 0

[출처] ThreadStart와 ParameterizedThreadStart는 다릅니다

[링크 복사]
게시됨 2016. 11. 14. 오전 10:25:44 | | |
스레드스타트:

ThreadStart 대리자는 void ThreadStart()로 정의되어 있어, 실행되는 메서드는 매개변수를 가질 수 없습니다.
ThreadStart threadStart=new ThreadStart(계산);
스레드 thread=new Thread(threadStart);
실. Start();
공공 공허 계산()
   {
이중 직경=0.5;
콘솔.쓰기("지름이 {0}인 원의 면적은 {1}"지름, 지름*수학.PI);
   }
       여기서는 ThreadStart 타입을 정의하는 delegate를 사용하며, 이 메서드는 스레드가 실행해야 할 메서드를 정의합니다: Calculate, 즉 직경 0.5의 원의 둘레를 계산하고 출력하는 방법입니다. 이는 멀티스레딩의 가장 단순한 예이며, 많은 경우 이 정도면 충분합니다




ParameterThreadStart:
ParameterThreadStart는 void ParameterizedThreadStart(객체 상태)로 정의되며, 이 대리자를 사용해 정의된 스레드의 시작 함수는 예를 들어 다음과 같은 입력 매개변수를 받아들일 수 있습니다:



ParameterizedThreadStart threadStart=new ParameterizedThreadStart(Calculate)
스레드 스레드=새 스레드() ;
실. 시작(0.9);
public void Calculate(object arg)
{
더블 지름=더블(arg);
콘솔.쓰기("지름이 {0}인 원의 면적은 {1}"지름, 지름*수학.PI);
}

Calculate 메서드는 객체 타입 객체의 매개변수를 가지고 있지만, 매개변수가 하나뿐이고 객체 타입이기도 합니다. 사용할 때도 변환이 필요합니다. 다행히도 매개변수가 존재할 수 있고, 여러 매개변수를 하나의 클래스로 결합한 후 이 클래스의 인스턴스를 매개변수로 전달하면 다중 매개변수 전송이 가능합니다. 예를 들면:





클래스 AddParams
{
    공공 지능 A, B;

    public AddParams(int numb1, int numb2)
    {
      a = numb1;
      b = numb2;
    }
}
#endregion

수업 프로그램
{
    static void Main(string[] args)
    {
      Console.WriteLine("스레드 객체로 ***** 추가 *****");
      Console.WriteLine("메인 스레드 ID {0}",
        Thread.CurrentThread.ManagedThreadId);

      AddParams ap = 새로운 AddParams(10, 10);
      스레드 t = 새로운 스레드(new ParameterizedThreadStart(Add));
      t. 시작(ap);
      콘솔.리드라인();
    }

    #region 덧셈 방법
    static void Add(객체 데이터)
    {
      만약 (데이터가 AddParams이다)
      {
        Console.WriteLine("메인 스레드 ID {0}",
          Thread.CurrentThread.ManagedThreadId);

        AddParams ap = (AddParams)data;
        Console.WriteLine("{0} + {1}은 {2}",
          AP.A, AP.B, AP.A + AP.B);
      }
    }
    #endregion
}
}




이전의:.net/c# 사용자 아바타 크롤, QQ 아바타 가져오기
다음:.net/c#은 운전자의 차량 연식을 계산합니다
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com