다음을 통해 공유


Visual C#을 사용하여 스레드 만들기

Microsoft Visual C# .NET 또는 Visual C#에서 다중 스레드 애플리케이션을 작성할 수 있습니다. 이 문서에서는 간단한 Visual C# 애플리케이션이 스레드를 만들고 관리하는 방법을 설명합니다.

원래 제품 버전: Visual C#
원래 KB 번호: 815804

요구 사항

다음 목록에서는 필요한 권장 하드웨어, 소프트웨어, 네트워크 인프라 및 서비스 팩을 간략하게 설명합니다.

  • Windows 또는 Windows Server
  • Visual C# .NET 또는 Visual C#

이 문서에서는 다음과 같은 topics 잘 알고 있다고 가정합니다.

  • Visual C# 프로그래밍
  • Visual Studio .NET IDE(통합 개발 환경) 또는 Visual Studio IDE

이 문서에서는 .NET Framework 클래스 라이브러리 네임스페이스 를 참조합니다System.Threading.

스레드를 사용하여 Visual C# 애플리케이션 만들기

  1. Visual Studio .NET, Visual Studio 또는 Visual C# Express Edition을 시작합니다.

  2. ThreadWinApp이라는 새 Visual C# Windows 애플리케이션 프로젝트를 만듭니다.

  3. 단추 컨트롤을 양식에 추가합니다. 기본적으로 단추의 이름은 Button1입니다.

  4. 폼에 ProgressBar 구성 요소를 추가합니다. 기본적으로 진행률 표시줄의 이름은 ProgressBar1입니다.

  5. 폼을 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 클릭합니다.

  6. 파일의 시작 부분에 다음 문을 추가합니다.

    using System.Threading;
    
  7. Button1에 대해 다음 button1_Click 이벤트 처리기를 추가합니다.

    private void button1_Click(object sender, System.EventArgs e)
    {
        MessageBox.Show("This is the main thread");
    }
    
  8. 클래스에 다음 변수를 Form1 추가합니다.

    private Thread trd;
    
  9. Form1 클래스에 다음 메서드를 추가합니다.

    private void ThreadTask ()
    {
        int stp;
        int newval;
        Random rnd = new Random ();
    
        while (true)
        {
            stp = this.progressBar1.Step * rnd.Next (-1, 2);
            newval = this.progressBar1.Value + stp;
            if (newval > this.progressBar1.Maximum)
                newval = this.progressBar1.Maximum;
            else if (newval < this.progressBar1.Minimum)
                newval = this.progressBar1.Minimum;
            this.progressBar1.Value = newval;
            Thread.Sleep (100);
        }
    }
    

    참고

    스레드의 기초가 되는 코드입니다. 이 코드는 ProgressBar1의 값을 임의로 증가 또는 감소시킨 다음 계속하기 전에 100밀리초를 대기하는 무한 루프입니다.

  10. Form1에 대해 다음 Form1_Load 이벤트 처리기를 추가합니다. 이 코드는 새 스레드를 만들고 스레드를 백그라운드 스레드로 만든 다음 스레드를 시작합니다.

    private void Form1_Load(object sender, System.EventArgs e)
    {
        Thread trd = new Thread(new ThreadStart(this.ThreadTask));
        trd.IsBackground = true;
        trd.Start();
    }
    

작동하는지 확인합니다.

  1. 애플리케이션을 빌드하고 실행합니다. ProgressBar1의 값이 임의로 변경됩니다. 작업의 새 스레드입니다.

  2. 기본 스레드가 ProgressBar1 값을 변경하는 스레드와 독립적임을 보여 주려면 폼의 단추를 클릭합니다. 다음 오류 메시지가 포함된 대화 상자가 표시됩니다.

    기본 스레드입니다.

입력을 기다립니다. ProgressBar1continues의 값이 변경됩니다.

문제 해결

더 복잡한 애플리케이션에서는 공유 변수에 액세스할 때 여러 스레드를 동기화해야 합니다. 자세한 내용은 Visual C# .NET 온라인 도움말 설명서의 lock 문 및 관련 topics 참조하세요.

참조

자세한 내용은 스레드 클래스를 참조하세요.