스레드를 종료 하는 프로세스를 시작 하려면 호출 되는 스레드에서 ThreadAbortException을 발생 시요 합니다. 이 메서드를 호출하면 일반적으로 스레드가 종료됩니다. 스레드 풀은 풀에 하나의 스레드로 시작합니다. 작업이 할당되면 풀 관리자는 최대 한도까지 추가 동시 워크로드에 대처하기 위해 새 스레드를 “삽입”합니다. 충분한 기간 동안 활동이 없으면 풀 관리자는 스레드를 “폐기”할 수 있습니다. 준비 상태 – 그것은 스레드가 실행하고 CPU 주기를 기다리고 준비가될 때 상황이다. 런타임은 ThreadAbortException을 throw하여 스레드를 중단합니다. 이 예외는 catch할 수 없으며 컨트롤이 있는 경우 finally 블록으로 전송됩니다. Thread.절전 모드는 특정 시간 간격동안 현재 스레드를 일시 중단하는 데 사용됩니다. 시간은 밀리초 또는 시간 범위로 지정할 수 있습니다.

절전 모드에서 메서드는 CPU 리소스를 소비하지 않으므로 간접적으로 다른 스레드 프로세스에 대한 메모리를 저장합니다. 좋은 전략은 다중 스레딩 논리를 독립적으로 검사하고 테스트할 수 있는 재사용 가능한 클래스로 캡슐화하는 것입니다. 프레임워크 자체는 나중에 다루어두는 많은 상위 수준의 스레딩 구문들을 제공합니다. 운영 체제가 현재 인스턴스의 상태를 실행으로 변경하게 하고 스레드가 실행하는 메서드에서 사용할 데이터를 포함하는 개체를 선택적으로 제공합니다. 응용 프로그램에서 실행되는 모든 스레드가 동일한 문화문화와 UI 문화문화를 공유하도록 다음 중 하나를 수행할 수 있습니다: 매일 많은 질문이 있는 이메일을 많이 받고, 구독자 중 한 명이 스레딩에 대한 좋은 질문을 했습니다. 스레딩 및 그 유형은 단계별로. 그래서 우리는이 기사를 작성하여 그를 설명하고 그와 C # 스레딩에 대해 더 알고 싶은 많은 다른 사람들과 공유 할 생각했다. 우리의 목표는 IT 지식을 전파하는 것입니다. 다중 스레딩은 CLR이 일반적으로 운영 체제에 위임하는 기능인 스레드 스케줄러에 의해 내부적으로 관리됩니다. 스레드 스케줄러는 모든 활성 스레드에 적절한 실행 시간이 할당되고 대기 중이거나 차단된 스레드(예: 단독 잠금 또는 사용자 입력)가 CPU 시간을 소비하지 않도록 합니다. 현재 관리되는 스레드에 대한 고유 식별자를 가져옵니다.

스레드에는 문자열이 첨부되어 있습니다. 가장 큰 것은 멀티스레딩이 복잡성을 증가시킬 수 있다는 것입니다. 많은 스레드가 있는 것은 그 자체로 많은 복잡성을 일으키지 않습니다. 스레드 간의 상호 작용(일반적으로 공유 데이터를 통해)이 수행됩니다. 이는 상호 작용이 의도적인지 여부에 따라 적용되며, 긴 개발 주기와 간헐적이고 재현할 수 없는 버그에 대한 지속적인 감수성을 유발할 수 있습니다. 이러한 이유로 상호 작용을 최소한으로 유지하고 가능한 한 간단하고 입증 된 디자인을 고수해야합니다. 이 문서에서는 주로 이러한 복잡성을 처리하는 데 중점을 둡니다. 상호 작용을 제거하고 말을 훨씬 적은이있다! 처리되지 않은 예외는 작업의 Wait 메서드를 호출할 때 호스트 스레드로 편리하게 다시 throw됩니다. 대기를 호출하지 않고 대신 작업을 포기하는 경우 처리되지 않은 예외는 일반 스레드와 마찬가지로 프로세스를 종료합니다.

여기서 우리는 단계별로 예제를 사용하여 스레딩을 보여 줄 것입니다, 우리는 시각적 스튜디오 2015에서이 예제를 수행 할 것입니다. Thread.Abort() 메서드를 사용하여 실행 중인 스레드를 파괴할 수 있습니다. 그러나 실제로는 CLR이 당신을 위해 더러운 일을하도록하는 것이 좋습니다. 장기 실행 프로세스를 중단하는 플래그를 가질 수 있습니다. 다중 스레드 응용 프로그램을 작성하는 동안 처리 할 수있는 알려진 문제가 많이 있습니다.